Jquery 如何使用ajax加载表单,验证表单,然后使用ajax提交表单?

Jquery 如何使用ajax加载表单,验证表单,然后使用ajax提交表单?,jquery,jquery-validate,unobtrusive-validation,jquery-forms-plugin,Jquery,Jquery Validate,Unobtrusive Validation,Jquery Forms Plugin,我正在打开一个jQuery对话框,其中包含一个表单,该表单由打开对话框时触发的ajax调用加载。当用户单击OK时,我希望在使用ajax提交表单之前验证表单。 以下是分配给“确定”按钮的回调: var dialogOK = function () { var $form = $(this).find("form:first"); if ($form.find("input:first").length > 0) { $form.removeData("vali

我正在打开一个jQuery对话框,其中包含一个表单,该表单由打开对话框时触发的ajax调用加载。当用户单击OK时,我希望在使用ajax提交表单之前验证表单。 以下是分配给“确定”按钮的回调:

var dialogOK = function () {
    var $form = $(this).find("form:first");
    if ($form.find("input:first").length > 0) {
        $form.removeData("validator").removeData("unobtrusiveValidation");
        $.validator.unobtrusive.parse($form);
        $form.validate({
            submitHandler: function (form) {
                alert("This alert doesn't appear");
            },
            invalidHandler: function (event, validator) {
                alert("Neither does this one");
            }
        });
        if ($form.valid) {
            alert("form.valid says it's valid when it's not");
            //$form.submit(); //when this is called the client-side 
                             //validation works and the form is not submitted
            //but when I call ajaxSubmit (forms jQuery plugin)
            //the form is submitted
            $form.ajaxSubmit({
                success: function () {
                    alert("And I still need to work out how to check whether 
                        server-side validation passed before I close the dialog");
                }
            });
        }

    }
    else {
        $(this).dialog("close");
    }
};
我已经基于这些代码,但我无法确定在执行ajax提交时如何启动客户端验证

我正在使用jquery-1.9.1、jquery.unobtrusive-ajax、jquery.validate和jquery.form

您需要检查plugin方法的值,所以您需要它

if ($form.valid()) 
{
  // do stuff
}
不是这个

if ($form.valid) 
{
  // always true, as presence of the plugin method is 'truthy'
}

如果($form.valid)是“truthy”,因为它是您需要的插件方法,如果($form.valid())就是这样!如果你把它写在回信里,我会接受的