【问题标题】:jquery form validation not working on dynamically added form inputsjquery表单验证不适用于动态添加的表单输入
【发布时间】:2011-03-01 01:31:51
【问题描述】:

我正在尝试验证一个表单,其中一部分包含动态添加的输入字段,但由于某种原因动态添加的字段没有验证,这是我用来将字段附加到表单的代码,

Javascript:

//instantiate form validation
$("#form").validationEngine('attach');

$("#add_friend").live('click', function(){
    var count = $(".friend").size();
    if(count == 4){
        alert("only 4 friends allowed");
    }else{
        //append a friend field to the friend container
        $("[data-custom='refer_container']").append("<div class='friend'>"
            +"<label for='friend_"+count+"'>friend: </label>"
            +"<input type='text' data-custom='name' class='validate[required] text-input' id='friend_name_"+count+"' name='friend_name_"+count+"' />"
            +"<input type='text' data-custom='email' class='validate[required] text-input' id='friend_email_"+count+"' name='friend_email_"+count+"' />"
            +"<div class='delete'></div>"
        +"</div><br />");
    }
    $("#form").validationEngine('attach');
});

我正在使用this 插件来验证表单,谢谢!

【问题讨论】:

  • 你也可以添加你的html。谢谢
  • 请在 jsfiddle 或 pastebin 中上传您的 html。不要把它扔在这里。此外,当您单击 add_friends 时,是否会收到任何 javascript 错误。尝试在 Firebug 或 Chrome 的检查器中进行一些调试。在点击处理程序中放置一个断点,看看是否一切都按预期工作。

标签: javascript jquery html validation


【解决方案1】:

看来您必须先分离。否则,您的新输入将不包含在评估中。可能会检查他们的 API 是否有动态添加(这比破坏和重建验证对象要好)

<html>
  <head>
    <link rel="stylesheet" href="http://www.position-relative.net/creation/formValidator/css/validationEngine.jquery.css" type="text/css"/>
  </head>
  <body>
    <form id="form">
        <div data-custom='refer_container'></div>
        <input id="add_friend" type="button" value="Add Friend" />
        <input type='text' data-custom='name' class='validate[required] text-input' id="test" name="test" />
    </form>
  </body>
</html>     
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" ></script>
<script type="text/javascript" src="http://www.position-relative.net/creation/formValidator/js/jquery.validationEngine-en.js" ></script>
<script type="text/javascript" src="http://www.position-relative.net/creation/formValidator/js/jquery.validationEngine.js" ></script>
<script type="text/javascript">
    //instantiate form validation 
    $(function(){
        $("#form").validationEngine('attach');  
        $("#add_friend").live('click', function(){   
            //Must Detach First
            $("#form").validationEngine('detach');  
            var count = $(".friend").size();     
            if(count == 4){         
                alert("only 4 friends allowed");     
            }else{         
                //append a friend field to the friend container         
                $("[data-custom='refer_container']").append("<div class='friend'>"             
                +"<label for='friend_"+count+"'>friend: </label>"             
                +"<input type='text' data-custom='name' class='validate[required] text-input' id='friend_name_"+count+"' name='friend_name_"+count+"' />"             
                +"<input type='text' data-custom='email' class='validate[required] text-input' id='friend_email_"+count+"' name='friend_email_"+count+"' />"             
                +"<div class='delete'></div>"         
                +"</div><br />");     
            }     
            $("#form").validationEngine('attach'); 
        }); 
    });
</script>

【讨论】:

  • 准确!是的,您必须先分离,添加字段,然后再次附加。为我工作!
猜你喜欢
  • 1970-01-01
  • 2016-07-14
  • 2011-07-13
  • 2023-03-28
  • 2020-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多