javascript - 仅连接并打印带有文本的值,并在之间添加逗号

标签 javascript jquery forms join

我有一个带有单选按钮的表单和一个按钮,用于根据这些单选按钮的值生成文本到文本字段。

有些问题考虑相同的问题(疾病),并且这些问题是这种疾病的症状,例如:

  • 您是否有第 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/

相关文章:

javascript - 如何使用 angular.js 禁用输入框

javascript - jQuery 对话框定位

javascript - 如果语句有问题 text();

javascript - Jquery 时间选择器插件无法正常工作

jquery - 奇怪的 jQuery 变量传递行为

html - 使用 Tab 键时如何更改文本字段选择顺序

javascript - 如何将 div View 的动画滚动到特定的 x 和 y 坐标

包含一个或多个指定字母的字符串的 JavaScript 正则表达式

javascript - 两个条件之间的 SetInterval 不起作用

javascript - Jquery 表单未提交或验证