过去几年来,Google工具栏的自动填充功能一直是我的网络开发存在的祸根。我一直决定尝试创建一个计时器控件来检查更改,因为开发人员很难在控件上触发更改事件。当控件嵌入嵌套转发器中时,这变得越来越复杂,然后尝试将它绑定到UpdatePanel是一个进一步的复杂化。
是否有人能够成功阻止Google工具栏填写表单字段而无需将字段重命名为无关紧要的内容? (注意:这不适用于'State'下拉列表,甚至可以检查字段值。)
为了像谷歌员工一样聪明,这是一次盛大的愚蠢监督。
更新:对于那些可能来这里寻找解决方案的人。到目前为止我发现的工作是你有ASP.net,是使用服务器控件“Timer”并将此控件设置为UpdatePanel的触发器。它有助于循环并检查更改的值。
如果您只能访问javascript,或者正在使用其他框架,那么我发现使用以下函数可以发挥最佳效果(我试图监控状态和zip更改.focusElement是必需的,因为当将鼠标悬停在下拉列表中时,它改变了selectedindex):
function MonitorChanges(sStateDropdownID, sZipCodeID, sHiddenStateFieldId, sHiddenZipFieldId, bDoPostback) {
var state = $('#' + sStateDropdownID).val();
var zip = $('#' + sZipCodeID).val();
var hiddenstate = $('#' + sHiddenStateFieldId).val();
var hiddenzip = $('#' + sHiddenZipFieldId).val();
$('#' + sHiddenStateFieldId).val(state);
$('#' + sHiddenZipFieldId).val(zip);
var compareString = state + zip;
var compareHiddenString = hiddenstate + hiddenzip;
var focusElement = getElementWithFocus();
if (compareString != compareHiddenString && isShippingZip(zip)) {
bDoPostback = true
}
if (parseInt(focusElement.id.search('drpState')) == -1 && parseInt(focusElement.id.search('txtZip')) == -1 && bDoPostback) { bDoPostback = false; __doPostBack(sStateDropdownID, ''); }
var f = function() { MonitorChanges(sStateDropdownID, sZipCodeID, sHiddenStateFieldId, sHiddenZipFieldId, bDoPostback); }
setTimeout(f, 1000);
}
答案 0 :(得分:5)
根据Google开发人员的recent post,使用autocomplete="off"
属性将禁用IE和Firefox中的Google工具栏自动完成功能。请注意,此属性必须应用于<form>
代码,而不是单个<input>
代码:
<form method="post" action="http://example.com" autocomplete="off">
<!-- ... -->
</form>
虽然这不是即时修复,但它可能是最可靠的解决方案 - 如果可以等到Google工具栏的下一次迭代。
答案 1 :(得分:1)
我曾经遇到过firefox中自动填充的问题。我这样做是为了防止它。
<div style="display:none">
<input type="text" name="user" />
<input type="password" name="password" />
</div>
<input type="text" name="user" />
<input type="password" name="password" />
不知道它是否也适用于谷歌自动填充。
答案 2 :(得分:0)
出于好奇,当您将AutoCompleteType设置为禁用时,自动填充是否仍会触发?
<asp:TextBox ID="textBox1" runat="server" AutoCompleteType="Disabled" />
答案 3 :(得分:0)
我不完全确定这是否有效,但我记得它是一种可能的解决方案。
尝试使用span标记拆分关键字标签。
<label for="firstName">Fi<span>rs</span>t N<span>am</span>e:</label>
<input id="firstName" name="firstName">
此外,据称谷歌计划在Firefox中支持autocomplete="false"
。但是,没有干净的IE解决方案。