在Firefox上使用Google自动填充时触发javascript事件
我有一个表单,其中我禁用了提交按钮,直到用户键入所有必填字段。我最初使用onkeyup在必填字段上保留选项卡,并在填写所有必填字段时启用按钮。在Firefox上使用Google自动填充时触发javascript事件
但我让用户抱怨说他们在Google工具栏上使用自动填充按钮填写表单,并且提交按钮仍然被禁用。
我通过为每个输入元素调用onpropertychange事件来解决IE中的这个问题,它很好地工作。
但在Firefox中,我找不到一个事件,当点击google自动填充按钮时会触发一个事件。
非常感谢。
从这个google toolbar support thread来看,自动填充不仅对开发者来说是一个庞大的PITA,而且很难关闭。截至09年8月谷歌声称它会兑现form
上的autocomplete="off"
属性,但截至今日,该功能似乎还没有发布。
你曾经是能够给你的输入元素无意义的名称(如name="xx_Address_32423423"
)混淆自动填充(从而有效地禁用它),但是他们已经通过看子内进行自动填充更“聪明”您的元素名称,以确定该字段是否可以自动填充(再次,从该线程中的投诉来判断)。
对于您的情况,您最好还是打出一拳,找到相当于Firefox的onpropertychange
。看看DOMAttrModified
event。 Specifially,尝试检查event.attrName
property,看是否value
已被自动填写改变:
function realOnChange(event) {
var attrName = event.propertyName || event.attrName;
if(attrName === 'value') {
// etc
}
}
为event.propertyName
的检查是保持兼容当前的onpropertychange
实现(如果这甚至有可能)。
感谢您的回答。我不得不迅速回应这个问题,因此我使用'setTimeOut()'函数来检查必填字段并启用提交按钮。
$().ready(function() {
CheckRequiredFields();
timeOutRtn = setTimeout("AutoMonitorMandatoryField()", "3000");
});
function AutoMonitorMandatoryField() {
if ($("#btnSave").attr("disabled")) {
CheckRequiredFields();
timeOutRtn = setTimeout("AutoMonitorMandatoryField()", "3000");
}
}
crescentfresh - 我会考虑的DOMAttrModified事件,看看我能得到它的me.Thanks
有没有必要添加复杂的setTimeout也不setInterval的工作。
正好赶上形式的任何充装文本框的“改变”事件,经过每一个充装现场,如果它不是空的隐藏标签
更改事件未被解雇,我看不到任何其他事件这是在自动填充时被解雇的。看起来像必须做$(window).load并检查$('input:-webkit-autofill')...但即使如此,它只有有时候工作...我认为它好于没有,如果你仍然在寻找最终的解决方案。 – 2012-01-19 09:54:48
Chrome在自动填充时不会触发任何事件。 – enyo 2012-03-14 13:27:35
6年前这是一个问题(http://allinthehead.com /复古/ 102 /时代 - 他们正在改变),今天依然如此。 – 2009-09-29 14:58:32
神圣地狱,自动填充是shiite:http://www.google.com/support/forum/p/Toolbar/thread?tid=7dcddc95f43dac19&hl=zh-CN – 2009-09-29 15:09:32