[英]jQuery Validation Plugin
我真的是想避免问这个问题。 我已经看到了很多关于此插件的文章,但他们仍然对我不太了解。 现在,我有一个新的帐户注册表格,我正在尝试编写一种自定义方法来验证唯一的用户名。 我想以下应该起作用:
$.validator.addMethod(
"uniqueUsername",
function(value, element) {
$.post(
"http://" + location.host + "/scripts/ajax/check_username.php",
{
username: value
},
function(response) {
if(response == 'true') {
return true;
} else {
return false;
}
}
);
},
"This username is already taken."
);
不幸的是,无论回调函数如何,插件似乎都在继续前进。 我发现有人建议做以下事情:
var result = false;
$.validator.addMethod(
"uniqueUsername",
function(value, element) {
$.post(
"http://" + location.host + "/scripts/ajax/check_username.php",
{
username: value
},
function(response) {
if(response == 'true') {
result = true;
} else {
result = false;
}
}
);
return result;
},
"This username is already taken."
);
但是,由于它存储了值,因此似乎有一个延迟,然后在下一个事件中将设置任何值。 你们推荐什么?
由于这是一个异步检查,因此还需要更多检查(您不能从类似这样的函数返回值,在您的情况下,该值始终为false)。 内置方法是remote
,使用方式如下:
$("form").validate({
rules: {
username: {
remote: {
url: "http://" + location.host + "/scripts/ajax/check_username.php",
type: "post"
}
}
}
});
这将发布一个username: valueofElement
因为该规则适用于名为username
的元素。 如果验证通过,则服务器端脚本应返回true
,否则返回false
...如果已经使用了用户名,则返回false
。
您可以在此处阅读更多有关remote
选项的信息 ,包括如何在需要时传递其他数据参数。
js代码
username: {
required: true,
minlength: 5,
remote: '/userExists'
},
PHP代码检查是否存在并返回消息
public function userExists()
{
$user = User::all()->lists('username');
if (in_array(Input::get('username'), $user)) {
return Response::json(Input::get('username').' is already taken');
} else {
return Response::json(Input::get('username').' Username is available');
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.