停用Google工具栏自动填充功能

时间:2009-07-23 16:46:06

标签: asp.net javascript html css

过去几年来,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);
    }

4 个答案:

答案 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解决方案。