-2

我正在使用 jQuery 验证插件。有没有办法从 jQuery 表单验证中获取错误类型?例如,

$('mform').validate({
rules: {
    email: {
        required: true,
        maxlength: 40
    }
},
messages: {
    email: {
        required: "This is a required field.",
        maxlength: "Please enter less than 40 chars"
    }
},
errorPlacement: function(error, element) {
    error.appendTo(element.parent());
}
});

我只想将“必需”错误生成的错误消息放在 html 页面某处的“div”内,而不是将其附加到“element.parent()”。如果我能得到错误类型,例如“required”或“maxlength”错误,我可以编写代码来做到这一点。

我们可以得到 jQuery Validate 错误类型吗?

上面的问题没有提到要添加哪些参数。于是又问。

任何帮助表示赞赏!谢谢!

4

2 回答 2

1

编辑: 简短回答:

您的要求根本无法使用此插件完成。 (这也是非常罕见的情况,默认情况下无法完成的事情也可能根本不应该完成。)

1) 使用此插件作为起点编写您自己的自定义插件。自己认真尝试这样做,然后回到 SO 并在遇到困难时发布一个新的、更详细的问题。

2) 找到一个已经做你想要的插件。但是,我怀疑存在一个,因为所请求的选项不是人们通常想要的。一致且统一的用户体验意味着所有错误消息的处理方式相同,无论触发它的规则如何。


原始答案如下...


我想你可以errorPlacement像这样使用回调函数......

errorPlacement: function (error, element) {
    if (error.text().indexOf("required") !== -1) {
        error.insertAfter(element);
    } else {
        error.insertBefore(element);
    }
}

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

然而,这个解决方案有一些缺陷,因为它只处理第一个错误消息的初始位置。label所有后续消息都将位于相同的初始位置,因为插件仅label在创建后显示/隐藏消息。(在每个字段只有一种类型的消息的情况下,它可以很好地工作。)

我不认为任何其他回调函数会更好,因为你想要的东西没有内置到这个插件中。 (可能是因为大多数人认为当所有错误都具有一致的统一外观时,用户不会感到困惑,IMO。)

我已经回答了数百个关于这个插件的问题,你的问题是我遇到的第一个,要求能够以不同的方式处理一种类型的错误消息。大多数人只是想要更一致的用户体验。

于 2013-03-27T01:18:02.550 回答
0

尝试使用这个:

errorPlacement: function(error, element) {
    var message = $(error).text(); 

    // here message is your error text message
}
于 2014-08-12T08:18:40.950 回答