gpt4 book ai didi

javascript - jQuery 验证器 addMethod,无论显示什么错误消息

转载 作者:行者123 更新时间:2023-11-30 13:31:53 25 4
gpt4 key购买 nike

我正在努力使用 jQuery 的验证器插件进行一些验证。

基本上我是在检查用户名是否已经存在,所以我使用 addMethod 来创建我自己的方法。我通过 AJAX 向 Controller (MVC 模式中的 Controller )发送一个请求,该 Controller 查询数据库并生成一个响应,告知用户名是否存在。这是代码:

$.validator.addMethod("username_available", function(value, element) {
$.ajax({
url: MyPostURL,
type: "POST",
dataType: "html",
data: ({username: jQuery.trim($("#username").val()),
}),
success: function(data) {
if (data == "True")
return true; // Available
else
return false; // Already exists, not available
}
})
}, "Username not available.");

无论该字段是否可用,错误消息“用户名不可用。”一直显示。

MyPostURL 的响应正常。我做了一些调试,放置了一些 alerts(),结果很有意义。我确保 Controller 正在回显而不是返回。

据我所知,方法中的逻辑似乎没问题,所以我一定遗漏了什么。

任何人都可以阐明这一点吗?

T.I.A.

最佳答案

您的 $.ajax 调用是异步的,因此您的验证器会在 AJAX 调用完成之前返回;成功处理程序中的 return 语句不会从您的验证器返回值,它只是从成功处理程序返回一个值,没有人关心您的成功处理程序返回什么。您的验证器回调函数根本不返回任何值,并且缺少值会被验证器引擎解释为“false”。

你可以制作 $.ajax同步:

$.validator.addMethod("username_available", function(value, element) {
var is_valid = false;
$.ajax({
// as before...
async: false,
success: function(data) {
is_valid = data == 'True';
}
});
return is_valid;
}, "Username not available.");

但这将锁定浏览器,直到 $.ajax 调用完成。不过,对于简单的“用户名可用”验证来说,这可能没问题。

关于javascript - jQuery 验证器 addMethod,无论显示什么错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6443467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com