使用jquery验证多个同名字段

时间:2010-04-07 02:39:31

标签: javascript jquery

我正在尝试让jquery验证在多个字段上工作。原因是我添加了动态生成的字段,它们只是一个电话号码列表,从无到需要的数量。一个按钮添加另一个数字。

所以我想我已经把一个基本的例子放在一起,并按照以下链接中接受的答案的概念:

Using JQuery Validate Plugin to validate multiple form fields with identical names

然而,它没有做任何有用的事情。为什么不起作用?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
                    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
  <script type="text/javascript" src="http://dev.jquery.com/view/trunk/plugins/validate/lib/jquery.delegate.js"></script>
<script type="text/javascript" src="http://dev.jquery.com/view/trunk/plugins/validate/jquery.validate.js"></script>


<script>
  $("#submit").click(function(){
    $("field").each(function(){
      $(this).rules("add", {
        required: true,
        email: true,
        messages: {
          required: "Specify a valid email"
        }
      });   
    })
  });


  $(document).ready(function(){
    $("#myform").validate();
  });
</script>

</head>
<body>

<form id="myform">
  <label for="field">Required, email: </label>
  <input class="left" id="field" name="field" />
  <input class="left" id="field" name="field" />
  <input class="left" id="field" name="field" />
  <input class="left" id="field" name="field" />
  <br/>
  <input type="submit" value="Validate!" id="submit" name="submit" />
</form>

</body>
</html>

1 个答案:

答案 0 :(得分:7)

这:$("field").each(function(){
应该是:$("[name=field]").each(function(){

此外,您的ID应该是唯一的,如果不是这样,您将获得不可预测的行为。此外,您应该在document.ready内移动规则,就像这样(现在这是您的所有脚本):

$(function(){
  $("#myform").validate();
  $("[name=field]").each(function(){
     $(this).rules("add", {
       required: true,
       email: true,
       messages: {
         required: "Specify a valid email"
       }
     });   
   });
});