当用户使用自动填充时,jQuery电子邮件可用性无法检查
我有一个完美的jQuery功能,它可以检查电子邮件是否可用,但是,如果浏览器向他们提供自动填充建议,它不会识别是否输入了其他信件。例如,用户开始输入admin@admin.com但是,在“adm”中,他们使用下拉列表中的自动填充。jQuery仍然认为只输入了adm当用户使用自动填充时,jQuery电子邮件可用性无法检查,jquery,Jquery,我有一个完美的jQuery功能,它可以检查电子邮件是否可用,但是,如果浏览器向他们提供自动填充建议,它不会识别是否输入了其他信件。例如,用户开始输入admin@admin.com但是,在“adm”中,他们使用下拉列表中的自动填充。jQuery仍然认为只输入了adm $(function () { $('#email').keyup(function () { var email = $(this).val(); if (email != '' && email.l
$(function () {
$('#email').keyup(function () {
var email = $(this).val();
if (email != '' && email.length > 6) {
//$('.check').show();
$('error').fadeIn(400).html
var dataString = 'email=' + email;
$.ajax({
type: "POST",
url: "pages/check_email.php",
data: dataString,
cache: false,
success: function (result) {
if (result == 'Available') {
$('.check').html('Available');
} else {
$('.check').html('Unavailable');
}
}
});
} else {
$('.check').html('');
}
});
});
我想给你两个建议: 1-不要用Keyup钩住你的支票,每次我输入/删除一个字符时都会检查,这可能太难检查了,取而代之的是使用blur 2-我认为您可以尝试禁用此表单的自动完成功能,或者禁用其中的特定元素,直到您找到解决此问题的方法 例如:
<form id="myForm" autocomplete="off" method="post">
发件人:
autocomplete属性指定窗体是否应具有
自动完成打开或关闭
启用“自动完成”时,浏览器会自动完成值
基于用户以前输入的值
提示:表单可以有自动完成“开”和“关”
用于特定输入字段,反之亦然
下面是我在使用Regex(first)进行测试时所说的话,在执行AJAX调用之前,使用Regex(first)持续,这样当他们有焦点时,即使他们使用了自动完成,在几毫秒后,它会触发您的AJAX并查看电子邮件是否被接收
我建议只有当他们关注文本框时才进行间隔/限制循环,测试它是否是有效的电子邮件(regex-wise)whatever@whatever.com,然后将其发送到AJAX。除非它是一封有效的电子邮件,否则它不会杀死你的服务器!如果您没有真正使用该插件,请不要将问题标记为
[jquery validate]
。已删除。谢谢,我已采纳您的建议并将自动完成添加到表单中。希望这已解决您的问题。:)很乐意帮忙!我想说的是最好每100毫秒运行一次间隔时间,甚至不知道为什么我会在半秒钟内运行一次。哈哈,该检查工作得非常完美。然而,它返回的结果对于所有电子邮件都不可用,我认为这与框架中的第16行有关——在侧边栏上,您没有选择jQuery(1.7.2或更高版本)。我已经在JSFIDLE中对其进行了修改,不幸的是,一旦验证,它仍然返回所有电子邮件地址都不可用!您不能在JSFIDLE中运行任何AJAX,不幸的是,您必须在自己的页面上进行实时测试。
var testInterval;
$('#email').on({
focus: function () {
var _this = $(this);
testInterval = setInterval(function () {
var val = _this.val();
if (/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/.test(val)) {
clearInterval(testInterval);
// valid email
// now do AJAX!
}
}, 100);
},
blur: function () {
clearInterval(testInterval);
}
});