在firefox上使用Google自动填充时触发javascript事件

在firefox上使用Google自动填充时触发javascript事件,javascript,firefox,javascript-events,Javascript,Firefox,Javascript Events,我有一个表单,在该表单中,我禁用提交按钮,直到用户键入所有必填字段。我最初使用onkeyup在必填字段上保留一个选项卡,并在填充所有必填字段时启用按钮 但我有一些用户抱怨说,他们使用谷歌工具栏上的“自动填充”按钮填写表单,而“提交”按钮仍然处于禁用状态 我在IE中通过为每个输入元素调用onpropertychange事件修复了这个问题,它工作得很好 但在firefox中,我找不到当点击google自动填充按钮时会触发的事件 非常感谢您的帮助。从这一点来看,似乎autofill不仅对开发人员来说是

我有一个表单,在该表单中,我禁用提交按钮,直到用户键入所有必填字段。我最初使用onkeyup在必填字段上保留一个选项卡,并在填充所有必填字段时启用按钮

但我有一些用户抱怨说,他们使用谷歌工具栏上的“自动填充”按钮填写表单,而“提交”按钮仍然处于禁用状态

我在IE中通过为每个输入元素调用onpropertychange事件修复了这个问题,它工作得很好

但在firefox中,我找不到当点击google自动填充按钮时会触发的事件

非常感谢您的帮助。

从这一点来看,似乎autofill不仅对开发人员来说是一个巨大的PITA,而且很难关闭。从2009年8月起,谷歌声称它将尊重包含
表单上的
autocomplete=“off”
属性,但截至今天,该功能似乎尚未发布

过去,您可以为输入元素指定非感官名称(例如
name=“xx_Address_32423423”
),以混淆自动填充(从而有效地禁用它),但他们通过查看元素名称中的子字符串来确定字段是否可以自动填充,从而使自动填充更加“智能”(同样,从这方面的抱怨来看)

在您的情况下,您不妨不厌其烦地为Firefox的
onpropertychange
找到一个等价物。请查看。具体地说,请尝试检查
值是否已被自动填充更改:

function realOnChange(event) {
    var attrName = event.propertyName || event.attrName;
    if(attrName === 'value') {
        // etc
    }
}

检查是为了与当前的
onpropertychange
实现保持兼容(如果可能)。

感谢您的回答。我必须快速响应此问题,因此我使用“setTimeOut()”函数检查必填字段并启用提交按钮

$().ready(function() {
    CheckRequiredFields();
    timeOutRtn = setTimeout("AutoMonitorMandatoryField()", "3000");
});

function AutoMonitorMandatoryField() {
    if ($("#btnSave").attr("disabled")) {
        CheckRequiredFields();
        timeOutRtn = setTimeout("AutoMonitorMandatoryField()", "3000");
    }
}

crescentfresh-我将查看DOMAttrModified事件,看看是否可以让它为我工作。谢谢,没有必要添加复杂的setTimeOut或setInterval


只需捕获表单中任何可重新填充文本框的“更改”事件,检查每个可重新填充字段,如果它不是空的,则隐藏标签

这是6年前的问题(),直到今天。天哪,autofill是什叶派:更改事件没有触发,我看不到在autofill时触发的任何其他事件。看起来必须执行$(窗口).load并检查$('input:-webkit autofill')…但即使如此,它也只是有时起作用…我认为如果您仍在寻找最终解决方案,它总比什么都没有好。Chrome在自动填充时不会触发任何事件。