我有一个表单,我在其中禁用了提交按钮,直到用户输入了所有必填字段。我最初使用onkeyup在必填字段上保留一个标签,并在填写所有必填字段时启用该按钮。
但我让用户抱怨他们使用Google工具栏上的“自动填充”按钮填写表单,并且仍然禁用了提交按钮。
我通过为每个输入元素调用onpropertychange事件来修复IE中的这个问题,并且它运行良好。
但在firefox中,我无法找到一个在点击Google自动填充按钮时会触发的事件。
非常感谢。
答案 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。
只需抓住表单中任何可重新填充的文本框的“更改”事件,浏览每个可填写的字段,如果它不是空的,请隐藏标签