尝试使用jQuery Remote设置自定义验证消息

前端之家收集整理的这篇文章主要介绍了尝试使用jQuery Remote设置自定义验证消息前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个带有以下验证设置的表单:
$('#form').validate({
            onfocusout: false,onkeyup: false,onclick: false,success: function (){
                $('#username').addClass('input-validation-confirmation');
            }
        });
$('#username').rules("add",{
        onfocusout: false,required: true,email: true,remote: {
            url: function,type: 'GET',dataType: 'json',traditional: true,data: {
                username: function () {
                    return $('#username').val();
                }
            },dataFilter: function (responseString) {
                var response = jQuery.parseJSON(responseString);
                currentMessage = response.Message;
                if (response.State == 0) {
                    currentMessage = currentMessage + 0;
                                return false;
                }
                return 'true';
            },beforeSend: function (response) {
                showLoadingIndicator($('#username'));
            },complete: function () {
                hideLoadingIndicator($('#username'));
            }
        }
});

这是尝试做的是使用相同的验证元素(为了与其他框架一起使用)来显示错误和成功方法.

我的问题是我的规则的成功方法在远程验证完成之前被触发.我尝试了几种方式设置消息,但似乎没有在验证成功时调用自定义消息参数.

当使用远程和模式验证规则的混合时,是否有人知道使用验证错误字段的成功和错误消息的其他方法

编辑:

我现在明白我期待在错误的时间成功举办.我需要在验证完成后触发的事件(未提交).有没有这样的事件?

解决方法

你的代码……
$('#username').rules("add",{
    onfocusout: false,remote: { ... },messages: { ... },success: function (label) { ... }
});

这里的问题是onfocusout,onkeyup和成功不是“规则”.只有单个“规则”和消息选项可以放在.rules(‘add’)方法中.

$('#username').rules("add",{
    required: true,messages: { 
        remote: "custom remote message"
    }
});

请参阅.rules()方法的文档:http://jqueryvalidation.org/rules

onfocusout,onkeyup和success是仅在.validate()方法内部的“选项”,该方法仅附加到< form>元件.

至于远程的“自定义”消息:As per the docs,此错误消息将自动成为从您的服务器返回的消息…没有特殊设置.

根据评论编辑并更新OP:

你的代码

$('#form').validate({
        onfocusout: false,success: function (){
            $('#username').addClass('input-validation-confirmation');
        }
});

你说,“尽管如此,通过更新的代码(见上文),我从未见过成功事件.”

您已禁用此表单上的所有活动.触发此字段验证的唯一事件是单击提交按钮.究竟什么时候你会“看到”成功火上浇油?

演示:http://jsfiddle.net/xMhvT/

换句话说,当您禁用所有其他事件时,提交是唯一可以触发验证测试的事件.

编辑基于另一个OP更新:

“I now understand I was expecting a success event at the wrong time. I
need an event that is fired once validation has completed (not
submitted). Is there any such event?”

成功不是“事件”. “事件”是点击,模糊,键盘等(onkeyup,onfocusout和onclick是控制此插件事件的选项)

成功是一种“回调功能”. “回调函数”是事件发生的事情.

•如果需要每次字段通过验证时触发的“回调函数”,则可以使用成功.

•如果需要在表单通过验证时触发的“回调函数”,则可以使用submitHandler.但是,这也是在提交表单时.

•如果要“测试”整个表单或单个字段以查看它是否有效而不提交表单,则可以使用.valid()“方法”.

$('#username').valid();  // for one field

// or

$('#form').valid();  // for the whole form

// you can also...

if ($('#form').valid()) {
   //do something if form is valid
}

方法将触发测试(显示消息)并返回布尔值.

DEMO:http://jsfiddle.net/xMhvT/1/

见:http://jqueryvalidation.org/valid/

猜你在找的jQuery相关文章