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

时间:2009-09-29 14:42:06

标签: javascript firefox javascript-events

我有一个表单,我在其中禁用了提交按钮,直到用户输入了所有必填字段。我最初使用onkeyup在必填字段上保留一个标签,并在填写所有必填字段时启用该按钮。

但我让用户抱怨他们使用Google工具栏上的“自动填充”按钮填写表单,并且仍然禁用了提交按钮。

我通过为每个输入元素调用onpropertychange事件来修复IE中的这个问题,并且它运行良好。

但在firefox中,我无法找到一个在点击Google自动填充按钮时会触发的事件。

非常感谢。

3 个答案:

答案 0 :(得分:1)

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

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

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

crescentfresh - 我将调查DOMAttrModified事件,看看我是否可以让它为我工作。谢谢

答案 1 :(得分:0)

从这个google toolbar support thread来看,似乎autofill不仅是开发人员的庞大PITA,而且很难关闭。截至2009年8月,谷歌声称它将尊重包含autocomplete="off"的{​​{1}}属性,但截至今天,此功能似乎尚未发布。

您曾经能够为您的输入元素提供非敏感的名称(例如form)以混淆自动填充(从而有效地禁用它),但他们通过查看<使自动填充更加“智能”元素名称中的em> substrings ,以确定该字段是否可以自动填充(同样,根据该主题中的投诉判断)。

在你的情况下,你也可以使用拳头并找到Firefox的name="xx_Address_32423423"的等价物。看看DOMAttrModified event。特别是,请尝试检查event.attrName property以查看自动填充是否更改了onpropertychange

value

event.propertyName的检查是为了与您当前的function realOnChange(event) { var attrName = event.propertyName || event.attrName; if(attrName === 'value') { // etc } } 实施保持兼容(如果可能的话)。

答案 2 :(得分:0)

无需添加复杂的setTimeOut和setInterval。

只需抓住表单中任何可重新填充的文本框的“更改”事件,浏览每个可填写的字段,如果它不是空的,请隐藏标签