1000hz bootstrap 验证器自定义
1000hz bootstrap validator custom
我无法将 return 字符串传回验证器。
这是我的js
$('#frmSignUp').validator({
custom: {
emailexist: function ($el) {
var result = checkUserEmail($el.val())
.done(function (r) {
if (!r.success) {
// email already in use
return r;
}
})
return result.responseText;
}
}
});
function checkUserEmail(name) {
return $.ajax({
url: '@Url.Action("CheckUserName","Account")',
data: { ChapterPOCEmail: name },
type: 'POST',
dataType: 'json'
});
}
在 chrome 开发工具中 "r" 确实具有来自控制器 json return 的完整
{"success":false,"responseText":"That email is already in use."}
但是,验证器没有收到字符串,因此在反馈中仍然显示绿色复选标记,并且在帮助块中没有消息。我曾尝试使用 "data-remote",但无法正确获取 asp.net 至 return 状态代码以及消息。它覆盖了我发回的任何自定义消息,验证器无法接收它。
如能就我的问题提供任何帮助,我们将不胜感激。
ajax
是一个异步方法 by deafult 并且没有 return 任何值。
您可以强制同步或使用 promises,并在成功时使用它的价值...
用这个改变你的checkUserEmail
:
function checkUserEmail(name) {
var r = false;
$.ajax({
url: '@Url.Action("CheckUserName","Account")',
data: { ChapterPOCEmail: name },
type: 'POST',
dataType: 'json',
async: false // wait for the call, dont treat as an async call
}).done(function(result) {
r = result === "OK";
}).fail(function (err) {
console.log(err, "something went awire");
}).always(function () {
console.log("all done");
});
return r;
}
我假设你的 ajax 调用 returns OK
,记得相应地更改它。
我无法将 return 字符串传回验证器。
这是我的js
$('#frmSignUp').validator({
custom: {
emailexist: function ($el) {
var result = checkUserEmail($el.val())
.done(function (r) {
if (!r.success) {
// email already in use
return r;
}
})
return result.responseText;
}
}
});
function checkUserEmail(name) {
return $.ajax({
url: '@Url.Action("CheckUserName","Account")',
data: { ChapterPOCEmail: name },
type: 'POST',
dataType: 'json'
});
}
在 chrome 开发工具中 "r" 确实具有来自控制器 json return 的完整
{"success":false,"responseText":"That email is already in use."}
但是,验证器没有收到字符串,因此在反馈中仍然显示绿色复选标记,并且在帮助块中没有消息。我曾尝试使用 "data-remote",但无法正确获取 asp.net 至 return 状态代码以及消息。它覆盖了我发回的任何自定义消息,验证器无法接收它。
如能就我的问题提供任何帮助,我们将不胜感激。
ajax
是一个异步方法 by deafult 并且没有 return 任何值。
您可以强制同步或使用 promises,并在成功时使用它的价值...
用这个改变你的checkUserEmail
:
function checkUserEmail(name) {
var r = false;
$.ajax({
url: '@Url.Action("CheckUserName","Account")',
data: { ChapterPOCEmail: name },
type: 'POST',
dataType: 'json',
async: false // wait for the call, dont treat as an async call
}).done(function(result) {
r = result === "OK";
}).fail(function (err) {
console.log(err, "something went awire");
}).always(function () {
console.log("all done");
});
return r;
}
我假设你的 ajax 调用 returns OK
,记得相应地更改它。