2009-07-23 206 views
2

過去幾年來,Google工具欄的自動填充功能一直是我網絡開發存在的禍根。我總是試圖創建一個計時器控件來檢查更改,因爲開發人員未能在控件上觸發更改事件。當控制器埋入嵌套式中繼器內,然後嘗試將其綁定到UpdatePanel時,這會變得越來越複雜。禁用Google工具欄自動填充

有沒有人成功地阻止Google工具欄填寫表單字段,而無需將字段重命名爲無足輕重? (注意:這不適用於'國家'下拉菜單,甚至可以檢查字段值)。

就像谷歌員工應該這麼聰明,這是一個非常荒謬的疏忽。

更新:對於那些可能會來這裏尋找解決方案。我發現迄今爲止工作的是你有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); 
    } 
+1

你能告訴我們爲什麼你想禁用自動填充? – 2009-07-23 16:53:46

+0

我想禁用它,因爲它簡化了在所有相關表單字段上捕獲javascript事件。 – 2009-07-23 16:56:14

+0

我希望我在這裏不是天真的。重置表單可以嗎? – shahkalpesh 2009-07-23 17:48:08

回答

5

根據Google開發者的recent post,使用autocomplete="off"屬性將禁用IE和Firefox中的Google工具欄自動完成功能。請注意,此屬性必須應用於<form>標籤,而不是單獨的<input>標籤:雖然這不是一個即時修復

<form method="post" action="http://example.com" autocomplete="off"> 
<!-- ... --> 
</form> 

,它可能是最可靠的解決方案成爲可能 - 如果有可能要等到下一次Google工具欄的迭代。

0

只是出於好奇,並自動填充仍然當您設置AutoCompleteType爲禁用火?

<asp:TextBox ID="textBox1" runat="server" AutoCompleteType="Disabled" /> 
+0

設置AutoComplete =「Off」並設置AutoCompleteType =「None」沒有方向,這進一步阻礙了開發人員工具欄簡單地忽略這些屬性。 – 2009-07-24 15:52:12

0

我不能完全肯定這是否會工作或沒有,但我記得整個它的到來,作爲一個可能的解決方案。

嘗試使用span標籤拆分關鍵字的標籤。

<label for="firstName">Fi<span>rs</span>t N<span>am</span>e:</label> 
<input id="firstName" name="firstName"> 

另外,據說Google計劃在Firefox中支持autocomplete="false"。儘管如此,沒有乾淨的IE解決方案。

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" /> 

不知道它是否也適用於谷歌自動填充。