【发布时间】:2014-03-16 04:51:15
【问题描述】:
我正在使用jQuery Validation plugin (JVP) 通过 ajax 执行服务器端验证。除了一件事之外,一切都运行良好:JVP 无法对空白字段执行远程验证。
我不介意将其默认规则required: true 用于具有简单存在验证的属性。但有时我的模型中有复杂的逻辑,我想将其保留在服务器端。
所以问题是:我不能强制 JVP 通过他的内置远程 ajax 方法验证空白字段。但我可以在他的required 方法中使用函数(结果应该是真或假):
required: function(element) {
return true_or_false;
}
所以我决定在这个函数中使用异步 ajax 请求,但我无法从异步 ajax 调用返回值。我尝试使用回调,但无法使其工作,我遇到了这个问题。这是我的代码(CoffeeScript):
validate_url = '/emails/validate'
required_validate = (e, callback) ->
data = {}
data[e.name] = $(e).val()
$.ajax(
url: validate_url
type: 'post'
dataType: 'json'
data: data
success: (response) ->
callback(response)
)
$('#my_form').validate(
rules:
'email[email]':
required: (element) ->
required_validate(element, (response) ->
if response == true || response == "true"
false
else
true
)
)
我检查了所有发送到服务器的数据以及服务器的响应——没关系。
JVP的required方法不等待响应,一直得到true的问题。如何将success ajax 请求的值返回给他?
【问题讨论】:
-
响应是
true,我用断点检查了if response == true || response == "true"是true并且函数返回false,但为时已晚——required方法已经得到true -
“验证空白字段”是什么意思?您想要一个空白字段吗?如果它是空白的,你为什么需要服务器告诉你这个?
标签: javascript jquery ajax validation jquery-validate