jQuery验证需要使用复选框的条件

时间:2015-12-03 08:15:11

标签: jquery validation

我正在使用HTML表单,其中整体行为由复选框name="doregister"

控制
  

(unchecked = login,checked = register)

字段的可见性由此复选框控制。注册字段应该被验证:

我试图通过以下方式控制验证:

jQuery("#myform").validate({
    rules: {
        loginusername: {
            required:  function() { return jQuery("input[name=doregister]").is(":checked")?"1":"0"=="0";},
        },
        ...
        salutation: {
            required:  function() { return jQuery("input[name=doregister]").is(":checked")?"1":"0"=="1";},
        },
        ...
});

对于选中的复选框doregister失败,即没有验证称呼。

任何提示?

1 个答案:

答案 0 :(得分:0)

你的函数内的条件不能正确返回布尔值。

return jQuery("input[name=doregister]").is(":checked")?"1":"0"=="1";

选中后,它会返回STRING" 1"这不是一个布尔值,在这种情况下也不会得到类型转换,因为它不知道这样做,因此你的条件不能被"要求"。

您可以通过强制布尔值来修复您真正奇怪的条件,如下所示:

return jQuery("input[name=doregister]").is(":checked")?!!"1":"0"=="1";

请勿这样做,只需返回复选框状态的布尔值:

return jQuery("input[name='doregister']")[0].checked;

请注意,OTHER应该是" NOT"检查状态:使用!

return !jQuery("input[name='doregister']")[0].checked;

代码段:

$("#myform").validate({
    rules: {
      loginusername: {
        required: function () {
          return !jQuery("input[name='doregister']")[0].checked;
        },
      },
      salutation: {
        required: function () {
          return jQuery("input[name='doregister']")[0].checked;
        },
      }
    }
  });