過去幾年來,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);
}
你能告訴我們爲什麼你想禁用自動填充? – 2009-07-23 16:53:46
我想禁用它,因爲它簡化了在所有相關表單字段上捕獲javascript事件。 – 2009-07-23 16:56:14
我希望我在這裏不是天真的。重置表單可以嗎? – shahkalpesh 2009-07-23 17:48:08