我通过使用rest api对服务器进行ajax调用来验证电子邮件,我能够很好地完成这项工作,但我希望我的方法可以等待请求完成或等待2,3秒(无论标准)之前继续努力......方法一次又一次调用
这是什么在代码发生的事情,
var regexEmail = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
var $imgEmail = $("#emailValidateImg");
var $txtEmail = $("#txtEmail");
var ValidateEmailClientSide = function() {
$imgEmail.attr('src', waitImg).show();
var email = $txtEmail.val();
console.log(regexEmail.test(email));
if (email && regexEmail.test(email)) {
ValidateEmailServerSide();
}
else {
$imgEmail.attr('src', redImg).show();
$(".form_row").slice(2, 5).show();
}
};
var ValidateEmailServerSide = function() {
$.getJSON(_spPageContextInfo.webAbsoluteUrl + "/_vti_bin/my/my.svc/Users/Exists/", { email: $txtEmail.val() })
.done(function (data) {
$imgEmail.attr('src', greenImg).show();
var $details = $(".form_row").slice(2, 5).show();
var emailExists = data.UserExistsResult;
if (emailExists == 1) {
$details.hide();
}
})
};
$txtEmail.on('keyup keypress blur change paste cut', ValidateEmailClientSide);
我想包括在上面的代码超时,
也许我能做到这一点,
clearTimeout(ValidateEmailClientSide.timeout);
ValidateEmailClientSide.timeout = setTimeout(function(){
// Rest of code goes here
}, 100);
我想做什么
我想给用户开始验证之前一段时间,像2,3秒,如果用户开始与输入交互再次然后停止请求并再次等待2,3秒然后再发出请求。
请提供的jsfiddle ... – Rayon
@RayonDabre我的Web服务是不是公众,所以不知道我怎么能使用该API :( – Mathematics
你可以提供找到任何虚拟代码.. – Rayon