我有一个名为email class keyup-an的输入字段。我用它来验证它很容易,但它可以工作或当个人手动输入字段时。如何使其也用于选择历史数据。当你点击电子邮件,昨天你把test @ test.com,历史列表下降,你可以选择它,但它不是一个密钥。
我在使用.change或.click之后尝试了相同的功能,但它没有用。你们可以建议吗?有效吗
$('.keyup-an').keyup(function() {
$('span.error-keyup-1').hide();
var inputVal = $(this).val();
var numericReg = /^[a-zA-Z0-9_ ]{2,30}$/;
if(!numericReg.test(inputVal)) {
$(this).css('background', '#FAC3C3');
$(this).after('<span class="error error-keyup-1">Validationfail</span>');
}
else {
$(this).css('background', 'lightgreen');
}
});
答案 0 :(得分:1)
你可以通过
来做到这一点autocomplete='off'
例如
<form name="form1" id="form1" method="post" autocomplete="off">
或尝试类似
的内容$(input).autocomplete().keyup(function(event) {
event.stopPropagation();
}).keydown(function() {
$(this).autocomplete('search', $(input).val());
});
好读
答案 1 :(得分:1)
如果我理解正确,您希望在单击自动完成项目时触发事件。
这是一个已知的bug,查看这篇关于jquery插件的文章,我认为这正是你所需要的:
http://furrybrains.com/2009/01/02/capturing-autofill-as-a-change-event/
答案 2 :(得分:0)
而不是将您的函数绑定到keyup事件..可能将它绑定到更改事件? 好吧..这似乎不适用于某些浏览器..您可以参考前面的答案并使用解决方案,它基本上创建一个计时器来检查间隔中的值以检测更改。如果您希望验证发生得非常快,则强制浏览器执行大量工作。或者您可以启用自动完成功能并强制用户手动输入值,如同建议的第一个答案。