jquery验证不起作用

时间:2014-10-03 07:16:43

标签: jquery asp.net-mvc-4 jquery-plugins

我有这个代码用于验证但它显示错误,即使它返回true。我将所有返回false更改为true但显示错误。 第二,我想要显示result.message而#34;用户名已经被采取"。

    $.validator.addMethod("uniqueUserName", function (value, element) {
        $.ajax({
            type: "post",
            url: "/validation/search",
            data: {
                nationalCode: $('#karkonan_MelliCode').val(),
                personType: $('#karkonan_MelliatCode').val()
            },
            dataType: "json",
            async: false,
            success: function (result) {
               // alert(result.message);
               // alert(result.resultCode);
                // if the user exists, it returns a string "true"
                if (result.resultCode == "0") {
                    alert($('#karkonan_MelliatCode').val());// already exists
                    //j = result.message;// already exists
                    return false;
                }
                else {
                    alert($('#karkonan_MelliatCode').val());
                    return true;      // username is free to use
                }
            },
            error: function (result) {
                // if the user exists, it returns a string "true"
                alert("error");
                return false;
                // username is free to use
            }
        })
    }, "Username is Already Taken");

它的规则是:

'karkonan.MelliCode': {
                        number:true,
                        minlength: 10,
                        maxlength: 10,
                        required: true,
                        withmelliat:true,
                        uniqueUserName: true
                    },

2 个答案:

答案 0 :(得分:1)

您的addMethod可能需要立即回复。

您执行Ajax并且响应是异步的。 returnsuccess处理程序中的error语句不适用于addMethod返回值(在Ajax请求之后和响应之前立即完成)。

要检查,请在此处添加return true;

    });
    return true;
}, "Username is Already Taken");

我已经解决了这个问题,我已经(并且你有)阅读了你的validator plugin documentation

您还必须阅读此插件的remote属性:here the documentation

答案 1 :(得分:0)

error是一个函数,如果AJAX请求失败,则称为 ,而不是脚本返回错误! 该函数接收三个参数:

jqXHR(在jQuery 1.4.x中,XMLHttpRequest)对象,描述发生的错误类型的字符串和可选的异常对象(如果发生)。

第二个参数(null除外)的可能值为timeouterrorabortparsererror。发生HTTP错误时,errorThrown会收到HTTP状态的文本部分,例如Not FoundInternal Server Error

从jQuery 1.5开始,错误设置可以接受一系列函数。每个函数将依次调用。 注意:此处理程序不会针对跨域脚本和跨域JSONP请求调用。

有争议的是,success是一个被称为的函数,如果AJAX请求本身成功,即浏览器可以正确发送请求。

该函数传递了三个参数:

从服务器返回的数据,根据dataType参数格式化;描述状态的字符串;和jqXHR(在jQuery 1.4.x,XMLHttpRequest)对象中。