2014-11-05 97 views
0

我将字段动态添加到表单中,并且这些字段是必需的。验证()动态添加字段

即使我在创建字段后再次调用validate(),它们也不会被验证。

任何想法为什么? 感谢

JSFIDDLE

HTML:

<form action="" class="validate"> 
    <select id="A1" class="required" > 
     <option value="">Select...</option> 
     <option value="1">1</option> 
     <option value="2">2</option> 
    </select> 
     <br> <input type="submit" name="go" value="go" /> 
    </form> 

的jQuery:

$(".validate").validate(); 

    $("#A1").on("change", function(){ 
     var A1 = $(this).val(); 
     if (A1=='1') { 
      $("#A1").nextAll('select').remove(); 
      $('<select id="A11" class="required" > <option value="">you selected 1, now select....</option> <option value="1">11</option> <option value="2">22</option></select>').insertAfter($(this)); 
      $(".validate").validate(); 
     } else if (A1=='2') { 
      $("#A1").nextAll('select').remove(); 
      $('<select id="A22" class="required" > <option value="">you selected 2, now select....</option> <option value="1">1111</option> <option value="2">2222</option></select>').insertAfter($(this)); 
      $(".validate").validate(); 
     } else { 
      $("#A1").nextAll('select').remove(); 
     } 

    }); 
+0

你**不能**调用'.validate()'多个在同'form'倍。一旦你调用'.validate()',插件就被初始化,随后的调用被忽略。 – Sparky 2014-11-05 15:19:04

+0

那么如何在新生成的字段上重新调用'validate()'函数? – kneidels 2014-11-05 15:23:38

+0

你没有。如果你想在包括新字段的任何字段上添加/删除规则,那就是'.rules()'方法的创建方法。请参阅文档:http://jqueryvalidation.org/rules/ – Sparky 2014-11-05 15:27:10

回答

0

就找到了解决办法:只要我加上 '名' 属性附加伤害到各个领域 - 他们重新验证。

<form action="" class="validate"> 
    <select id="A1" name="A1" class="required" > 
     <option value="">Select...</option> 
     <option value="1">1</option> 
     <option value="2">2</option> 
    </select> 
     <br> <input type="submit" name="go" value="go" /> 
    </form> 

http://jsfiddle.net/kneidels/gzcypn1r/1/

+0

这个插件众所周知的要求是,每个输入元素都有一个(唯一的)“name”属性。它在[文档](http://jqueryvalidation.org/reference/#markup-recommendations)以及[标签的SO wiki页面](http://stackoverflow.com/tags/jquery-validate/info)中。 – Sparky 2014-11-05 15:36:18