Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 加入;仅打印带文本的值,并在值之间添加逗号_Javascript_Jquery_Forms_Join - Fatal编程技术网

Javascript 加入;仅打印带文本的值,并在值之间添加逗号

Javascript 加入;仅打印带文本的值,并在值之间添加逗号,javascript,jquery,forms,join,Javascript,Jquery,Forms,Join,我有一个带有单选按钮的表单,还有一个根据这些单选按钮的值生成文本的按钮 有些问题考虑到了同样的问题(疾病),这些问题是这种疾病的症状,比如: 您是否有症状编号1(单选按钮YES with value=“symptom 1”和NO with NO value(value=”“) 您是否有症状编号2(单选按钮“是”和“否”的值均为=“症状2”) ……等等 然后按下supposo to generate(支持生成)=患者出现该疾病的症状:症状1、症状2、症状3 问题是:如何连接这些单选按钮的值,并

我有一个带有单选按钮的表单,还有一个根据这些单选按钮的值生成文本的按钮

有些问题考虑到了同样的问题(疾病),这些问题是这种疾病的症状,比如:

  • 您是否有症状编号1(单选按钮YES with value=“symptom 1”和NO with NO value(value=”“)
  • 您是否有症状编号2(单选按钮“是”和“否”的值均为=“症状2”) ……等等
然后按下supposo to generate(支持生成)=患者出现该疾病的症状:症状1、症状2、症状3

问题是:如何连接这些单选按钮的值,并在它们之间添加逗号和空格(,)。此外,我不想包括那些选择了“否”(也不包括逗号和空格)的值.因此,如果症状1为是,症状2为否,症状3为是,症状4为否,则输出为:患者有本病症状;症状1,症状3

如果“和”这个词也能用,那就更好了

如果我在数组中设置它们,无论是否选中“否”或“是”,它都会按逗号,因此需要进行一些修剪(或其他…?)

现在,我的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:


症状1?是的
否
症状2?是的 否
症状3?是的 否
症状4?是的 否

生成文本


您可以在选择器中使用
^=
来获取名称以“症状”开头的所有选定收音机,然后使用
$获取值。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");

您可以在选择器中使用
^=
获取名称以“症状”开头的所有选定收音机,然后使用
$获取值。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");

我想这对你有帮助

只需将这些行添加到代码中

                var symtoms = (symptom1 == "" ? "" : symptom1 + ", ")
                        + (symptom2 == "" ? "" : symptom2 + ", ")
                        + (symptom3 == "" ? "" : symptom3 + ", ")
                        + (symptom4 == "" ? "" : symptom4 + ", ");
                var res = symtoms.trim().replace(/,{1,}$/, '');

                $("#RESULTTEXTBOX").val("Patient has symptoms of this disease" + res + ".");

我想这对你有帮助

只需将这些行添加到代码中

                var symtoms = (symptom1 == "" ? "" : symptom1 + ", ")
                        + (symptom2 == "" ? "" : symptom2 + ", ")
                        + (symptom3 == "" ? "" : symptom3 + ", ")
                        + (symptom4 == "" ? "" : symptom4 + ", ");
                var res = symtoms.trim().replace(/,{1,}$/, '');

                $("#RESULTTEXTBOX").val("Patient has symptoms of this disease" + res + ".");

下面是构建Albertos答案的一些东西,但是它支持牛津逗号。此外,过滤器表达式在我看来更可读

$(“#按钮”)。单击(函数(){
var symptoms=$(“输入[name^=symptom]:选中”).filter(函数(){返回此.value.trim()!==”;});
var values=$.map(症状,函数(e,i){返回e.value});
$(“#RESULTTEXTBOX”).text(“患者有这种疾病的症状。”+formatArray(值));
});
函数格式化数组(arr){
var-outsr=“”;
如果(arr.length==1){
outStr=arr[0];
}否则如果(arr.length==2){
outsr=arr.join('and');
}否则如果(arr.length>2){
outStr=arr.slice(0,-1)。连接('、')+'和'+arr.slice(-1);
}
回报率;
}

症状1?是的
否
症状2?是的 否
症状3?是的 否
症状4?是的 否

生成文本


下面是一些构建Albertos答案的东西,但是它支持oxford逗号。此外,过滤器表达式的可读性更高一些

$(“#按钮”)。单击(函数(){
var symptoms=$(“输入[name^=symptom]:选中”).filter(函数(){返回此.value.trim()!==”;});
var values=$.map(症状,函数(e,i){返回e.value});
$(“#RESULTTEXTBOX”).text(“患者有这种疾病的症状。”+formatArray(值));
});
函数格式化数组(arr){
var-outsr=“”;
如果(arr.length==1){
outStr=arr[0];
}否则如果(arr.length==2){
outsr=arr.join('and');
}否则如果(arr.length>2){
outStr=arr.slice(0,-1)。连接('、')+'和'+arr.slice(-1);
}
回报率;
}

症状1?是的
否
症状2?是的 否
症状3?是的 否
症状4?是的 否

生成文本


单选按钮不能成为二进制(是/否)答案的最佳UI设备。如果使用复选框,对用户和您来说,一切都会变得简单得多。单选按钮不能成为二进制(是/否)答案的最佳UI设备答案。如果使用复选框,对用户和您来说,一切都会变得简单得多。我在添加工作演示的地方编辑了我的问题。在该演示中,您的解决方案不起作用:当我用这个新变量替换症状1、2、3和4时,当我在症状选项中选择“否”时,它仍然显示逗号。@JohnDou检查我编辑的答案。添加d用于排除空值的过滤器(从“否”单选按钮)非常感谢!我在添加工作演示的地方编辑了我的问题。在该演示中,您的解决方案不起作用:当我用这个新变量替换症状1、2、3和4时,当我在症状选项中选择“否”时,它仍然显示逗号。@JohnDou检查我编辑的答案。添加了一个过滤器以排除空的价值观(来自“否”单选按钮)就像一个魅力一样,还有和部分。非常感谢!谢谢,但不知怎么回事。与@Alberto Trindade Tavares solution一起工作过虽然谢谢,但不知怎么回事。与@Alberto Trindade Tavares solution一起工作过