FireFox捕获自动完成输入更改事件

KCl*_*ugh 14 javascript firefox autocomplete

我正在尝试订阅更改ajax自动完成表单的输入标记上的事件.当用户单击FireFox的自动完成建议时,不会触发这些更改事件.

我见过IE的修复程序,但不是FireFox.您可以在此处查看此行为

重新创建的步骤:在其中一个框中键入任何输入,然后单击"提交".

再次在同一个框中键入值.

您应该会在输入框下方看到自动填充建议框.请注意,单击建议不会触发更改事件(它也不会触发click事件)

目前我唯一的选择是在此字段上禁用自动完成功能,但我不想这样做.

Jet*_*son 31

使用自动完成时Firefox 4+触发'oninput'事件.
这里有一些jQuery使这个更具可操作性:

$('#password').bind('input', function(){ /* your code */});
Run Code Online (Sandbox Code Playgroud)


Ale*_*vić 7

我遇到了同样的问题.

显然,有密码管理器调试可用 https://wiki.mozilla.org/Firefox:Password_Manager_Debugging

所以我发现对我来说DOMAutoComplete事件被触发了,我已经设法通过jQuery的绑定将它连接到一个字段上

$('#email').bind('DOMAutoComplete',function() { ...
Run Code Online (Sandbox Code Playgroud)

  • 这必须是特定于浏览器的...很高兴看到更多关于此的信息...我在Chrome中尝试了这个并且它不起作用 (2认同)

Ser*_*pth 6

如果它让你感觉更好,那就是一个众所周知的错误

建议的解决方法:(不是我的,从这里开始

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Mozilla Firefox Problem</title>
<script type="text/javascript">
function fOnChange()
{
  alert('OnChange Fired');
}

var val_textBox;

function fOnFocus()
{
  val_textBox = document.getElementById('textBox').value;
}

function fOnBlur()
{
  if (val_textBox != document.getElementById('textBox').value) {
    fOnChange();
  }
}
</script>
</head>
<body>
<form name="frm">
<table>
<tr>
<td><input type="text" id="textBox" name="textBox" onFocus="fOnFocus()" onBlur="fOnBlur()"></td>
</tr>
<tr>
<td><input type="submit" value="Submit"></td>
</tr>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)