submitHandler为无效表单激发-jQuery验证

submitHandler为无效表单激发-jQuery验证,jquery,jquery-validate,Jquery,Jquery Validate,我有一个表单可以动态创建它的输入字段。它工作得很好,但现在我需要在表单有效时调用函数。我的问题是,一旦加载表单,submitHandler就会触发。我通过在提交处理程序中添加alert(“alert”)来验证它 <input type="text" id="FName" name="FName" class = "vali" /> //these input fields are for demonstration; these are created dynmaiclly

我有一个表单可以动态创建它的输入字段。它工作得很好,但现在我需要在表单有效时调用函数。我的问题是,一旦加载表单,
submitHandler
就会触发。我通过在提交处理程序中添加
alert(“alert”)
来验证它

 <input type="text" id="FName" name="FName" class = "vali" />   //these input fields are for demonstration; these are created dynmaiclly
 <input type="text" id="SName" name="SName" class = "vali"/>

 <button type="button" id="submit" name="submit">   //have tried type="submit" as well 
 </button>

 <script type="text/javascript">

  $(document).ready(function () {

        $('.vali').each(function () {
            $(this).rules('add', {
                required: true,
                messages: { required: "Can't be empty" },

                submitHandler: function (form) {
                    alert("alert"); // this fires as soon as the page load. 
                }
            })
        });
 });

 </script>  
//这些输入字段用于演示;这些都是动态创建的
//您也尝试过type=“submit”
$(文档).ready(函数(){
$('.vali')。每个(函数(){
$(此).rules('add'{
要求:正确,
消息:{必需:“不能为空”},
submitHandler:函数(表单){
alert(“alert”);//页面加载后立即触发。
}
})
});
});

submitHandler是
.validate()
方法(插件的初始化方法)的回调函数。它是分配给整个表单行为的选项,从不分配给单个字段


提交者

  • 不能在内部使用。只有单个规则和
    消息
    选项可以位于
    .rules()
    方法的内部

  • 不能在
    .validate()
    方法中使用

  • 只能在或方法的内部使用

正确使用

$(document).ready(function () {

    $('#myform').validate({ // initialize plugin
        submitHandler: function (form) {
            // fires on a VALID form just after the submit button click event. 
            alert("alert"); 
        }
    });

});

由于需要在
.validate()
之前调用
.setDefaults()
,因此可以将其从DOM就绪事件处理程序中拉出以强制执行此操作


演示:

我有一个动态表单,因此无法使用验证功能。我如何使用submitHandler,或者更确切地说,我拥有的另一个替代方法是什么。@user2322507,即使使用动态表单,
.validate()
方法也不是可选的-它是插件必须初始化的方式。如果您自己没有调用
.validate()
,可能是您的框架自动调用了它。因此,如果你不能使用
.validate()
作为你的插件选项,那么你可以使用
.setDefaults()
,正如我在第三个要点中提到的那样。我尝试添加了在原始代码下面显示的验证代码u。未调用任何警报消息。@user2322507,您不能调用
.validate()
方法两次。如果您的框架已经在自动调用
.validate()
,则不能再次调用它。请参阅我的最新答案
.setDefaults()
是此时您唯一的选项。即使使用setDefaults,我也无法看到警报消息。我回滚了编辑,因为此时接受的答案更有意义。
$.validator.setDefaults({  // change default options
    submitHandler: function (form) {
        // fires on a VALID form just after the submit button click event. 
        alert("alert"); 
    }
});