jquery远程validation:将远程数据传递给funcion
我的代码
var validator = $("#form-utente").validate( { rules: { login: { checkLogin: true } } }
我的“checkLogin”function……
$.validator.addMethod("checkLogin", function(value, element) { return eval($.ajax({ url: "checkLogin.cfm", async: false, data: { login: function() { return $("#login").val(); }, } }).remoteData); });
checkLogin.cfm(remoteData)返回“false”,当我需要“true”时,反之亦然。
我如何评估远程数据? …
我需要这样的东西:
rules: { login: { checkLogin: function(remoteData) { if(remoteData == true) { return false; } else { return true; } }} }
任何的想法? 非常感谢。
通常,您将使用jquery.validate中的remote
规则进行使用远程服务的validation。 您的实现假设一个同步调用,根据jQuery文档可能“暂时锁定浏览器,在请求处于活动状态时禁用任何操作”。 如果在每次更改或模糊事件之后检查它(例如默认validation行为),则可能会非常糟糕。
不幸的是, remote
没有提供一个钩子来改变你收到的数据的解释方式:
success: function(response) { ... var valid = response === true;
虽然您可以在设置规则时覆盖success
的实现,但这需要您复制规则使用的逻辑来管理表单的validation状态( 第1035-1050行 )。
所以…让我们说你对插件进行了一些小改动:
success: function(response) { ... var valid = ($.isPlainObject(param) && param.isValidResponse) ? param.isValidResponse(response) : response === true;
然后将您的规则设置为:
login: { remote: { url: "checkLogin.cfm", data: { login: function() { return $("#login").val(); }, }, isValidResponse: function(response) { // do something with response // return true or false } } }
然后,您应该能够以任何需要的方式解析响应。 如果这有帮助,请告诉我。