如果任何可选的单选按钮在提交之前没有得到答复,我想通知回答表单的用户(以确保他们被故意跳过)。 我的问题是,虽然我正在设置一个带有几个条件的if语句,但if语句在满足任何一个条件时返回true,而不是在满足所有条件时返回。我正在使用jQuery 1.7.1。
使用Javascript:
$("#optmsg").show();
function updateFormEnabledOpt() {
if (verifyOpt()) {
$("#optmsg").hide();
} else {
$("#optmsg").show();
}
}
function verifyOpt() {
if ($("#formidable input:radio[name='q11']:checked").val() !== 'undefined' && $("#formidable input:radio[name='q12']:checked").val() !== 'undefined' && $("#formidable input:radio[name='q13']:checked").val() !== 'undefined') {
return true;
} else {
return false;
}
}
$('#formidable input:radio[name="q11"]').change(updateFormEnabledOpt);
$('#formidable input:radio[name="q12"]').change(updateFormEnabledOpt);
$('#formidable input:radio[name="q13"]').change(updateFormEnabledOpt);
所以:只要三个问题中的任何一个都有一个选中的单选按钮,#optmsg就会被隐藏。 Jsfiddle(有一些html与脚本一起使用):http://jsfiddle.net/rnPA6/
更新:感谢您的帮助!凭借超快的速度,我可能会加入!这是一个工作小提琴:http://jsfiddle.net/rnPA6/14/
答案 0 :(得分:2)
val()
的内容,则 undefined
方法返回并返回空字符串,因为条件正在通过。如果值为空,请尝试不通过。
if ($("#formidable input:radio[name='q11']:checked").val()
&& $("#formidable input:radio[name='q12']:checked").val()
&& $("#formidable input:radio[name='q13']:checked").val() ) {
}
如果没有为输入单选按钮设置值,当您在其上调用"on"
方法时,jQuery将返回val()
。因此,如果没有设置,你应该为每个单选按钮设置至少一个空值。
答案 1 :(得分:0)
您正在使用和(&&)进行比较。在this jsfiddle中,我修改了您要使用的代码或(||)。
答案 2 :(得分:0)
您正在与包含文字'undefined'
而非价值undefined
的字符串进行比较。
答案 3 :(得分:0)
这样做:
function updateFormEnabledOpt() {
$("#optmsg").show();
if (($("#formidable input:radio[name='q11']:checked").val() !== undefined) && ($("#formidable input:radio[name='q12']:checked").val() !== undefined) && ($("#formidable input:radio[name='q13']:checked").val() !== undefined)) {
$("#optmsg").hide();
}
}
$('#formidable input:radio[name="q11"]').change(updateFormEnabledOpt);
$('#formidable input:radio[name="q12"]').change(updateFormEnabledOpt);
$('#formidable input:radio[name="q13"]').change(updateFormEnabledOpt);
查看实际操作:http://jsfiddle.net/BwUWp/