MVC JQuery对话框客户端验证

MVC JQuery对话框客户端验证,jquery,validation,jquery-ui-dialog,unobtrusive-validation,Jquery,Validation,Jquery Ui Dialog,Unobtrusive Validation,为什么验证在这里不起作用?我有一个链接,单击会打开一个对话框,从局部视图加载其内容。我想在单击对话框上的按钮时验证表单。我将验证脚本加载到布局文件中 $dialog = $<'<div></div>'); $('.linkClass').click(function (e) { e.preventDefault(); $.ajax({ url: this.href,

为什么验证在这里不起作用?我有一个链接,单击会打开一个对话框,从局部视图加载其内容。我想在单击对话框上的按钮时验证表单。我将验证脚本加载到布局文件中

$dialog  = $<'<div></div>');
$('.linkClass').click(function (e) {
            e.preventDefault();
            $.ajax({
                url: this.href,
                type: "GET",
                success: function (result) {
                    $dialog.load(this.url).dialog({
                        resize: "auto",
                        width: 490,
                        height: 430,
                        modal: true,
                        buttons: {
                            Save: function () {
                                if ($dialog.find('form:first').valid()) {
                                    $.ajax({
                                        url: "/Home/Dates",
                                        type: "POST",
                                        data: $('form').serialize(),
                                        datatype: "html",
                                        success: function (result) {
                                            $dialog.dialog('close');
                                        },
                                        error: function (xhr, testStatus, error) {alert("Error occured: " + error + " " + xhr + " " + testStatus) }
                                    });*/
                                }
                                else { alert("Please correct the errors on the form") }
                            },
                            Cancel: function () {
                                $(this).dialog("close");
                            }
                        }
                    });
                   $.validator.unobtrusive.parse($dialog.find('form:first').valid());
                    $dialog.dialog('open');

                },

                error: function (request, status, error) {
                    alert(request.responseText);
                }
            });

        });

指定jQuery函数时,如 $('.linkClass')。单击(函数(e){。。。 它必须在加载/生成类ID为.linkClass的元素后执行。jQuery会将其嵌套函数的副本附加到该类中的每个元素,因此如果在页面完全加载之前执行jQuery,则不会进行验证。 尝试将这个jQuery函数嵌套在JavaScript函数中,并在页面加载后执行它

function whenLoaded(){
    $('.linkClass').click(function (e) {
        e.preventDefault();
        $.ajax({
            url: this.href,
            type: "GET",
            success: function (result) {
                $dialog.load(this.url).dialog({
                    resize: "auto",
                    width: 490,
                    height: 430,
                    modal: true,
                    buttons: {
                        Save: function () {
                            if ($dialog.find('form:first').valid()) {
                                $.ajax({
                                    url: "/Home/Dates",
                                    type: "POST",
                                    data: $('form').serialize(),
                                    datatype: "html",
                                    success: function (result) {
                                        $dialog.dialog('close');
                                    },
                                    error: function (xhr, testStatus, error) {alert("Error occured: " + error + " " + xhr + " " + testStatus) }
                                });*/
                            }
                            else { alert("Please correct the errors on the form") }
                        },
                        Cancel: function () {
                            $(this).dialog("close");
                        }
                    }
                });
}
另外,我建议不要将AJAX请求嵌套在父AJAX请求的成功函数中。您应该使用纯JavaScript验证您的请求,并在成功后调用AJAX请求。您也不需要为AJAX请求使用表单,因为表单是使用POST而不是AJAX提交的


希望这有帮助!

上面的代码可以在我的document.ready函数中找到,以确保包含该类的元素已经存在。我不确定我是否理解您所说的“您应该在纯JavaScript中验证您的for”是什么意思。我不需要对1进行ajax调用吗)加载对话框的内容并2)提交对话框中的任何表单?否则,如何让对话框按钮处理表单的提交操作?