jquery验证 - 可选字段

时间:2010-10-21 08:04:06

标签: jquery

在注册表单中,middleName字段是可选的。当用户输入他/她的middleName时,它应该验证该字段。

我使用以下代码来实现上述方案,但它无法正常工作。

$("#middleName").rules("add", {checkName: true, required: false, messages: {checkName: "Please enter a valid middle name"} });

jQuery.validator.addMethod("checkName",
        function(value, element) {
            var regExp = new RegExp(/^[a-zA-Z0-9\s|\,|\.|\-|\']+$/);
            return regExp.test(value);
        },
        "Please enter a valid name."
);

任何人都可以建议我实现上述情况。

3 个答案:

答案 0 :(得分:6)

在自定义方法中,您需要添加可选子句,如下所示:

jQuery.validator.addMethod("checkName", function(value, element) {
  var regExp = new RegExp(/^[a-zA-Z0-9\s|\,|\.|\-|\']+$/);
  return this.optional(element) || regExp.test(value);
}, "Please enter a valid name.");

你可以在验证库的additional methods file中看到这样的例子作为参考,基本上这只会增加一个理智/“我甚至需要吗?”检查结果。

答案 1 :(得分:0)

这是答案。

您可以通过两种方式使用它。当你想要它作为可选字段时,请说“checkName:optional”。

$("#middleName").rules("add", {checkName: 'opt', messages: {checkName: "Please enter a valid middle name"} });

如果您想将其作为必填字段,请说出checkName: 'true'

$("#middleName").rules("add", {checkName: true, messages: {checkName: "Please enter a valid middle name"} });

你的规则将是

jQuery.validator.addMethod("checkName", function(value, element, param) {
  var regExp = new RegExp(/^[a-zA-Z0-9\s|\,|\.|\-|\']+$/);
  if(param == 'opt'){
      return this.optional(element) || regExp.test(value);
  }else{
      return regExp.test(value);
  }
}, "Please enter a valid name.");
祝你好运

答案 2 :(得分:-1)

我会做这样的事情:

jQuery("#middlename").bind("KeyUp").function(validateMiddleName());

然后

function validateMiddleName()
{
    if (jQuery("#middlename"))
    {
        //Do the validation
    }
}
相关问题