好的,这很好:
$( "#myform" ).validate({
rules: {
email: {
remote: {
url: "/ajax/check-email.php",
mothod: "get",
dataFilter: function( response ) {
return response;
}
}
}
}
});
字符串
此配置自动生成GET到url:
/ajax/check-email.php?email=EMAIL-TO-CHECK
型
问题是我有这个API要查询:
/ajax/email/EMAIL-TO-CHECK/exists
型
所以我必须在运行时创建要查询的url,但我不能以任何方式这样做。
我尝试直接使用$. AJAX ()来实现:
remote: function( ele ) {
var email = $(ele).val()
$.ajax({
url: "/ajax/email/"+ email + "/exists",
}).done(function( xhr ) {
return xhr
});
}
型
但验证不会触发。
我还尝试使用一个函数来获取“url”,但“email”是空的。就像这样:
var createUrl = function() {
var id = $("#myform input[name=email]").val(); //this is empty
return "/manager/ajax/pricelist/" + id + "/exists"
}
$( "#myform" ).validate({
rules: {
email: {
remote: {
url: createUrl(),
}
}
}
});
型
有什么想法吗?非常非常感谢。
1条答案
按热度按时间qlvxas9a1#
不,这在现有的
remote:
方法中是不可能的。关于documentation:服务器端资源通过
jQuery.ajax
(XMLHttpRequest
)调用,并获取与已验证元素的名称对应的键/值对及其值作为GET参数。所以
?email=EMAIL-TO-CHECK
的使用是内置在方法中的,没有机会定制。对您来说,最简单的解决方案可能是在服务器上创建一个重写规则,重写如下内容
字符串
至
型
更复杂的解决方案是编写自己的验证方法,类似于
remote:
,但允许您提供一个回调函数来生成URL。