If语句只返回true,但只满足几个条件中的一个(jQuery)

时间:2012-02-16 17:10:26

标签: javascript jquery forms validation

如果任何可选的单选按钮在提交之前没有得到答复,我想通知回答表单的用户(以确保他们被故意跳过)。 我的问题是,虽然我正在设置一个带有几个条件的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/

4 个答案:

答案 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/