簡體   English   中英

在JQuery中使用AND和OR選擇選擇單選按鈕的組合后,如何為輸入字段設置不同的值?

[英]How to set a different values to an input fields after selecting a combination of radio buttons using AND and OR selection in JQuery?

所以問題是這樣的:我有6對單選按鈕,每個按鈕代表一個“是/否”聲明。

我還具有4 read-only輸入字段,在用戶選擇radio按鈕的組合之后,我需要為其分配一個值(1 or 0)

問題在於存在價值分配規則:

  1. 如果(question 1)(question 2)“yes” -> combi(1) =1, combi(2, 3, 4)=0 (這很簡單。我的代碼有效)

  2. 如果(question 3)(question 4)(question 5)“yes” -> combi(2) =1, combi(1,2,4)=0 (這很簡單。我的代碼有效)

  3. 如果(question 1) AND [(question 2) OR (question 3) OR (question 4)]“yes” -> combi(3)=1, combi(1,2,4)=0 (這是問題所在1號)

  4. 如果(question 1) AND [(question 2) OR (question 3) OR (question 4)] AND (question 5)“yes” -> combi(4)=1, combi(1,2,3)=0 (這是問題2)

  5. 如果(question 1,2,3,4,5)NO > combi(1,2,3,4)=0 (這很簡單。我的代碼有效)

問題簡短-我需要根據所選按鈕在JQuery進行ANDOR選擇。 這是我的代碼。 我認為第三和第四“else if”選擇錯誤

Question 1
<input id="q1a" type="radio" name="q1"> yes
<input id="q1b" type="radio" name="q1"> no
<br/>
Question 2
<input id="q2a" type="radio" name="q2"> yes
<input id="q2b" type="radio" name="q2"> no
<br/>
Question 3
<input id="q3a" type="radio" name="q3"> yes
<input id="q3b" type="radio" name="q3"> no
<br/>
Question 4 
<input id="q4a" type="radio" name="q4"> yes
<input id="q4b" type="radio" name="q4"> no
<br/>
Question 5
<input id="q5a" type="radio" name="q5"> yes
<input id="q5b" type="radio" name="q5"> no
<br/>
Question 6
<input id="q6a" type="radio" name="q6"> yes
<input id="q6b" type="radio" name="q6"> no
<br/>

<input id="combi1" type="text" readonly="true">Combi1<br/>
<input id="combi2" type="text" readonly="true">Combi1<br/>
<input id="combi3" type="text" readonly="true">Combi1<br/>
<input id="combi4" type="text" readonly="true">Combi1<br/>

JQuery 
$('input').click(function(e){
if ($('#q1a').is(':checked') ||
$('#q2a').is(':checked')){
$('#combi1').val(1) &&
$('#combi2').val(0) &&
$('#combi3').val(0) &&
$('#combi4').val(0);
}
else if ($('#q3a').is(':checked') ||
$('#q4a').is(':checked') ||
$('#q5a').is(':checked')){
$('#combi1').val(0) &&
$('#combi2').val(1) &&
$('#combi3').val(0) &&
$('#combi4').val(0);
}
else if ($('#q1a').is(':checked') &&
$('#q3a').is(':checked') ||
$('#q4a').is(':checked') ||
$('#q5a').is(':checked')){
$('#combi1').val(0) &&
$('#combi2').val(0) &&
$('#combi3').val(1) &&
$('#combi4').val(0);
}
else if ($('#q1a').is(':checked') &&
$('#q3a').is(':checked') ||
$('#q4a').is(':checked') ||
$('#q5a').is(':checked') &&
$('#q6a').is(':checked')) {
$('#combi1').val(0) &&
$('#combi2').val(0) &&
$('#combi3').val(0) &&
$('#combi4').val(1);
}
else if ($('#q1b').is(':checked') &&
$('#q2b').is(':checked') &&
$('#q3b').is(':checked') &&
$('#q4b').is(':checked') &&
$('#q5b').is(':checked')){
$('#combi1').val(0) &&
$('#combi2').val(0) &&
$('#combi3').val(0) &&
$('#combi4').val(0);
}
})

我解決了! 這是這樣的:首先我考慮到||的確修改了邏輯。 在第一個TRUE語句處 停止&&&在第一個FALSE語句處停止 -這意味着我將最復雜的組合放在if / else序列中的第一位,而最簡單的末尾。 然后,我遵循了jmcgriz的建議,並且確實添加了一個額外的括號來組合&&和||。 正確地。 現在就可以了!

這是工作代碼。 如果有人有更好或更短的版本,我會打開它!

$('input').click(function(e){
if ($('#q1a').is(':checked') &&
$('#q6a').is(':checked') &&
($('#q3a').is(':checked') ||
$('#q4a').is(':checked') ||
$('#q5a').is(':checked'))) {
$('#combi1').val(0) &&
$('#combi2').val(0) &&
$('#combi3').val(0) &&
$('#combi4').val(1);
}
else if (($('#q1a').is(':checked')) &&
($('#q3a').is(':checked') ||
$('#q4a').is(':checked') ||
$('#q5a').is(':checked'))){
$('#combi1').val(0) &&
$('#combi2').val(0) &&
$('#combi3').val(1) &&
$('#combi4').val(0);
}
else if ($('#q3a').is(':checked') ||
$('#q4a').is(':checked') ||
$('#q5a').is(':checked')){
$('#combi1').val(0) &&
$('#combi2').val(1) &&
$('#combi3').val(0) &&
$('#combi4').val(0);
}
else if ($('#q1a').is(':checked') ||
$('#q2a').is(':checked')){
$('#combi1').val(1) &&
$('#combi2').val(0) &&
$('#combi3').val(0) &&
$('#combi4').val(0);
}
else {
$('#combi1').val(0) &&
$('#combi2').val(0) &&
$('#combi3').val(0) &&
$('#combi4').val(0);
}
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM