用提交处理程序进行jQuery验证

11 jquery jquery-validate

我使用jQuery验证插件的validate方法设置表单验证,我有一个提交处理程序来修改输入元素的值(我使用YUI编辑器,它需要saveHTML()调用将iframe的内容复制到textarea元素.).提交表单时,我希望验证程序在执行提交处理程序后验证表单.但是如果在验证调用之后注册它,则它不会执行我的提交处理程序.

例如,

<form id="form1" action="/test">
    <input type="text" name="txt1" id="txt1" />
    <input type="submit" value="submit" />
Run Code Online (Sandbox Code Playgroud)

$(document).ready(function() {
    $("#form1").submit(function() {
        $("#txt1").val("123456");
    });

    $("#form1").validate({
        rules: {
            txt1: {
                maxlength: 5
            }
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

在我的提交处理程序之后验证表单,以便取消提交.

$(document).ready(function() {
    $("#form1").validate({
        rules: {
            txt1: {
                maxlength: 5
            }
        }
    });

    $("#form1").submit(function() {
        $("#txt1").val("123456");
    });
});
Run Code Online (Sandbox Code Playgroud)

但是,如果我更改顺序,则在我的提交处理程序之前验证表单.

Dar*_*rov 8

您可以使用beforeSubmit回调来设置值:

$(function() {
    $('#form1').validate({
        rules: {
            txt1: { maxlength: 5 }
        },
        beforeSubmit: function(arr, $form, options) {
            $('#txt1').val('123456');
            return true;
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

  • 这是jQuery Form的一种方法.它如何与jQuery Validate结合? (13认同)

RaY*_*ell 2

尝试

$(document).ready(function() {
    $("#form1").submit(function() {
        $("#txt1").val("123456");

        $("#form1").validate({
            rules: {
                    txt1: {
                            maxlength: 5
                    }
            }
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

这样验证将由您的提交事件处理程序触发。