如何使自定义jQuery-Validate Rule工作?

时间:2014-08-08 20:17:50

标签: javascript jquery regex jquery-validate

这是我的表格:

<form class= "myForm" action="someAction" method="post">
  <fieldset>
    <input type="hidden" name="source" value="zions_direct" />
    <ul class="cf">
      <li>
        <label for="firstname">First Name</label>
        <input type="text" name="firstName" id="firstName" placeholder="First Name" class="text" />
      </li>
      <li>
        <label for="lastname">Last Name</label>
        <input type="text" name="lastName" id="lastName" placeholder="Last Name" class="text" />
      </li>
      <li>
        <label for="email">Email Address</label>
        <input type="email" name="email" id="input-email" placeholder="Email Address" class="text" />
      </li>
      <li>
        <input type="submit" alt="Send My Form" target="_blank" value="SUBMIT" />
      </li>
    </ul>
  </fieldset>
</form>

我尝试创建一个jQuery-validate规则,该规则检查firstName和lastName对Regex并在不符合条件时显示消息(同时阻止表单提交)(或自定义规则返回false):< / p>

function validator() {
  $.validator.addMethod('nameCheck', function(value, element) {
    return /^([a-zA-Z .'-]{3,80})+$/.test(value);
  }, 'Please type a valid name');

$('.myForm').validate({
  rules: {
    firstName: {
      required: true,
      name: true,
      nameCheck: true
    },
    lastName: {
      required: true,
      name: true,
      nameCheck: true
    },
    email: {
      required: true,
      email: true
    }
  }
});

我错过了什么?内置的电子邮件:true 有效,但我的自定义电子邮件不适用。感谢您的时间和帮助。

1 个答案:

答案 0 :(得分:0)

name方法不是此插件的一部分。我在你的OP中没有看到你使用.addMethod()创建它的任何地方,所以这会在评估你的nameCheck规则之前使验证停滞不前。

firstName: {
    required: true,
    name: true,  // <- what is this? 
    nameCheck: true
},