基于远程响应的 jQuery Validate
Posted
技术标签:
【中文标题】基于远程响应的 jQuery Validate【英文标题】:jQuery Validate On Remote response based 【发布时间】:2015-10-12 07:58:02 【问题描述】:remote:
url: "/pages/",
complete: function (status)
return !status;
我已经应用了 jquery 验证和远程参数,调用根据发送的数据返回 true 和 false,但我需要验证就像如果返回 true,那么它应该被认为是 false,反之亦然。我尝试在完整的回调中返回相反的响应,但我猜验证不是这样工作的。
【问题讨论】:
【参考方案1】:不确定,但可能是从远程返回的状态在这里不会被视为bool
。所以就试试这个吧。
remote:
url: "/pages/",
complete: function (status)
if(status=="true")
return false;
return true; //no need of else
【讨论】:
嗯,我试过了,但它没有帮助,我什至试着把 return false;直接在回调中,但验证不考虑响应 只需console.log(status)
,看看你得到了什么!如果是jqXHR
类型,则需要将其获取为status.responseText
我得到真/假取决于输入的数据【参考方案2】:
文档说:
响应被评估为 JSON 并且对于有效元素必须为 true,对于无效元素可以是任何 false、undefined 或 null,使用默认消息;或字符串,例如。 “该名称已被占用,请尝试 peter123”以显示为错误消息。
因此,请确保您使用有效的 JSON true 或 false 进行响应。
然后简单地做一个类似的声明
if(status)
或if(status == true)
但我建议不要在这方面进行任何更改。如您所建议的,如果远程页面为假,我将通过远程页面返回真。如果它实际上是假的,你不应该返回真。所以只需改变你回调的类型。
【讨论】:
【参考方案3】: remote:
url: "/pages/",
success: function( response )
var element = $(this).find(`your element`)[0];
var previous = validator.previousValue( element );
var valid = response === "ok" || response === "true", //add your valid condition here
errors, message, submitted;
validator.settings.messages[ element.name ].remote = previous.originalMessage;
if ( valid )
submitted = validator.formSubmitted;
validator.prepareElement( element );
validator.formSubmitted = submitted;
validator.successList.push( element );
delete validator.invalid[ element.name ];
validator.showErrors();
else
errors = ;
message = response || validator.defaultMessage( element, "remote" );
errors[ element.name ] = previous.message = $.isFunction( message ) ? message( value ) : message;
validator.invalid[ element.name ] = true;
validator.showErrors( errors );
previous.valid = valid;
validator.stopRequest( element, valid );
【讨论】:
以上是关于基于远程响应的 jQuery Validate的主要内容,如果未能解决你的问题,请参考以下文章
Select2是一个基于jQuery的选择框替代品。它支持搜索、远程数据集和无限滚动结果。
基于 AJAX 响应代码从 jquery modal 转到下一个字段集
JSON 中基于 WCF REST 的响应的 JQUERY AJAX
jQuery AJAX 轮询 JSON 响应,基于 AJAX 结果或 JSON 内容进行处理