JQuery表单验证不适用于新创建的元素

时间:2010-01-26 21:02:23

标签: forms jquery-plugins validation

我在Jquery Validation插件中遇到了一些问题,并想知道是否有人可以提供帮助。

目前,插件适用于当前页面上的任何表单元素

    $("#addRelease").validate({
     submitHandler: function(form) {
     form.submit();
     }
   });

但是,如果我在单击按钮上动态创建表单,则Jquery Validation插件将不适用于此新创建的元素。

    // Add release form
$(function(){
$('body#true #releases p a').click(function(){
         // Grab form using Jquery
        $.get('http://localhost:8500/mxRestore/views/viewlets/forms/ajax/a_addRelease.cfm?name_art='+name_art, function(data) { 
        // Place form returned via Jquery on page in formWrapper div        
        $('#formWrapper').html(data);
    });

    return false 
    });


});

以前有没有人遇到过这个问题而且知道一个解决方法?

非常感谢

2 个答案:

答案 0 :(得分:3)

很难说没有看到你的代码,但是你可能需要在将html插入页面后绑定“validate()”方法,因为在用户启动之前jQuery找不到#addRelease元素ajax调用(通过单击)然后将该元素添加到页面。

// Add release form
$(function(){
    $('body#true #releases p a').click(function(){
        // Grab form using Jquery
        $.get('http://localhost:8500/mxRestore/views/viewlets/forms/ajax/a_addRelease.cfm?name_art='+name_art, function(data) { 
            // Place form returned via Jquery on page in formWrapper div        
            $('#formWrapper').html(data);
            $("#addRelease").validate({
                submitHandler: function(form) {
                    form.submit();
                  }
            });
        });
        return false;
    });
});

答案 1 :(得分:2)

这是因为$("#addRelease").validate在调用HTML元素时会向其添加事件处理程序。插入新元素后,您必须再次调用它。