我有一个带有单选按钮的表单和一个按钮,用于根据这些单选按钮的值生成文本到文本字段。
有些问题考虑相同的问题(疾病),并且这些问题是这种疾病的症状,例如:
- 您是否有第 1 号症状(单选按钮"is",值为“症状 1”;“否”,无值 (value="")
- 您是否有症状 2(单选按钮"is",值为“症状 2”,“否”,值为“”) ...等等..
按钮然后假设生成=患者有这种疾病的症状:症状1,症状2,症状3。
问题是:我如何连接这些单选按钮的值并在它们之间添加逗号和空格 (, )。另外,我不想包含那些未选择“否”的值(也没有逗号和空格)。因此,输出将是如果症状 1 是,症状 2 否,症状 3 是,症状 4 否:患者有这种疾病的症状;症状1,症状3。
如果也能加上“and”就更好了。
如果我将它们设置在数组中,无论检查“否”还是"is",它总是会插入逗号,因此它需要一些 trim (或其他东西......?)
现在我的 jquery 看起来像:
JAVASCRIPT/JQUERY:
$("#BUTTON").click(function () {
var symptom1 = $("input[name=symptom1]:checked").val();
var symptom2 = $("input[name=symptom2]:checked").val();
var symptom3 = $("input[name=symptom3]:checked").val();
var symptom4= $("input[name=symptom4]:checked").val();
$("#RESULTTEXTBOX").val("Patient has symptoms of this disease" + symptom1 + symptom2 + symptom3 + symptom4 + ".");
HTML:
Symptom1 ?<input id="symptom1yes" name="symptom1" type="radio" value=" symptom1" /> YES
<input id="symptom1no" name="symptom1" type="radio" value="" />NO<br>
Symptom2 ?<input id="symptom2yes" name="symptom2" type="radio" value=" symptom2" /> YES
<input id="symptom2no" name="symptom2" type="radio" value="" />NO<br>
Symptom3 ?<input id="symptom3yes" name="symptom3" type="radio" value=" symptom3" /> YES
<input id="symptom3no" name="symptom3" type="radio" value="" />NO<br>
Symptom4 ?<input id="symptom4yes" name="symptom4" type="radio" value=" symptom4" /> YES
<input id="symptom4no" name="symptom4" type="radio" value="" />NO<br><br>
<button id="BUTTON">Generate text</button>
<br><br>
<textarea cols="34" id="RESULTTEXTBOX" name="RESULTTEXTBOX" rows="1" style="height: 98px; width: 473px"></textarea>
编辑:演示
$("#BUTTON").click(function () {
var symptom1 = $("input[name=symptom1]:checked").val();
var symptom2 = $("input[name=symptom2]:checked").val();
var symptom3 = $("input[name=symptom3]:checked").val();
var symptom4= $("input[name=symptom4]:checked").val();
$("#RESULTTEXTBOX").val("Patient has symptoms of this disease" + symptom1 + symptom2 + symptom3 + symptom4 + ".");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Symptom1 ?<input id="symptom1yes" name="symptom1" type="radio" value=" symptom1" /> YES
<input id="symptom1no" name="symptom1" type="radio" value="" />NO<br>
Symptom2 ?<input id="symptom2yes" name="symptom2" type="radio" value=" symptom2" /> YES
<input id="symptom2no" name="symptom2" type="radio" value="" />NO<br>
Symptom3 ?<input id="symptom3yes" name="symptom3" type="radio" value=" symptom3" /> YES
<input id="symptom3no" name="symptom3" type="radio" value="" />NO<br>
Symptom4 ?<input id="symptom4yes" name="symptom4" type="radio" value=" symptom4" /> YES
<input id="symptom4no" name="symptom4" type="radio" value="" />NO<br><br>
<button id="BUTTON">Generate text</button>
<br><br>
<textarea cols="34" id="RESULTTEXTBOX" name="RESULTTEXTBOX" rows="1" style="height: 98px; width: 473px"></textarea>
最佳答案
您可以在选择器中使用^=
来获取所有名称以“symptom”开头的选定 radio ,然后使用$.map
获取输入值到一个数组中,可以使用逗号连接:
var selectedSymptoms = $.map($("input[name^='symptom']:checked"),
function(radioButton) { return radioButton.value });
var selectedSymtomsYes = selectedSymptoms.filter(function(symptom) { return symptom });
var selectedSymptomsText = selectedSymtomsYes.join(",");
要使文本带有“and”,您可以这样做而不是最后一行:
var selectedSymptomsText = selectedSymtomsYes.join(",").replace(/,(?!.*,)/gmi, "and");
关于javascript - 仅连接并打印带有文本的值,并在之间添加逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45039228/