我遇到了三重嵌套IF语句的问题。
我有一个带有两个单选按钮的问题的表单,这个问题并不总是可见。我想捕获所做的选择,但是默认情况下,单选按钮没有被选中并且在源代码中仍然可见但是使用CSS display:none来隐藏。因此,我需要指定仅在选择的情况下发送选择的数据(用于测试的控制台日志)。
逻辑应该是,如果div是可见的,检查Q3_1是否被选中,如果是,则发送是,如果是,则检查是否选择了Q3_0,如果是,则发送False,如果未选择则不发送。
我认为拥有如下逻辑会更好,但我也无法使用它。
如果div可见且选择Q3_1则发送是 其他 如果div可见且选择Q3_0则发送否
非常感谢提前。
$(function () {
// Handler for .ready() called.
if ($("[id^=divWantMedical]").is(":visible")) {
if (document.querySelector("[id$='PreexistingConditions.Question3_1']").checked == true){
console.log("Send Yes");
} else {
if ((document.querySelector("[id$='PreexistingConditions.Question3_0']").checked == true){
console.log("Send No");
} else {
console.log("Don't send anything");
}
}
}
});
答案 0 :(得分:0)
if
之后还有一个额外的括号:
if ((document.querySelector("[id$='PreexistingConditions.Question3_0']").checked == true) {
应该是
if (document.querySelector("[id$='PreexistingConditions.Question3_0']").checked == true){
答案 1 :(得分:0)
对于单选按钮,您应始终确保默认选中一个,否则用户无法在不重新加载页面的情况下返回初始状态(未选中任何按钮)(或重置表单,但重置按钮似乎成为垂死的品种。)
在这种情况下,必须始终选择其中一个按钮,因此您始终会发送true / yes或false / no。
但是,您似乎想要涵盖两者都未被选中的情况(可能取消提交并显示错误消息)。因此,您希望以简化形式执行以下操作:
function doCheck(el) {
var form = el.form;
if (form.isVisible.checked) {
if (form.Q[1].checked) {
form.result.value = 'Send Yes';
} else if (form.Q[0].checked) {
form.result.value = "Send No";
} else {
form.result.value = "Don't send anything";
}
} else {
form.result.value = 'Element not visible';
}
}

<form onsubmit="return false">
<fieldset><legend>Logic test</legend>
Visible?<input type="checkbox" name="isVisible" checked><br>
Q3_0<input type="radio" name="Q"><br>
Q3_1<input type="radio" name="Q"><br>
<input type="button" value="Test" onclick="doCheck(this)">
<input type="reset"><br>
</fieldset>
<input name="result" readonly>
</form>
&#13;
如果元素不可见,则 if 逻辑都不会运行。我使用了一个复选框来简化元素是否可见的逻辑。