是否可以禁用Firefox的自動填充功能而不禁用自動填寫?禁用Firefox的自動填充
我知道我能做到這一點:
autocomplete="off"
但我不希望禁用自動完成,只是自動填充。
Firefox是填充了一些這意味着可以爲空
這主要是一個問題,當用戶刷新頁面我們的隱藏字段。表單字段將使用預刷新中的值重新填充。這是一個問題的例子是老派的地方。我們在哪裏填充值,並在提交時將其刪除。該值在刷新時重新填充,我們不知道它是否是佔位符或使用價值。
是否可以禁用Firefox的自動填充功能而不禁用自動填寫?禁用Firefox的自動填充
我知道我能做到這一點:
autocomplete="off"
但我不希望禁用自動完成,只是自動填充。
Firefox是填充了一些這意味着可以爲空
這主要是一個問題,當用戶刷新頁面我們的隱藏字段。表單字段將使用預刷新中的值重新填充。這是一個問題的例子是老派的地方。我們在哪裏填充值,並在提交時將其刪除。該值在刷新時重新填充,我們不知道它是否是佔位符或使用價值。
如果問題是,FF是填充字段,當用戶刷新,這是Firefox瀏覽器實際上是一個功能,盡力幫助用戶在意外刷新的情況下,他們不會失去他們輸入的任何內容。我不認爲你可以用HTML覆蓋這個。您可以使用JavaScript在頁面加載時清除/重置所有相關表單值。如果form.reset()在窗體上不起作用,你將不得不遍歷表單元素,並清除它們,就像這樣:
for (i = 0; i < frm_elements.length; i++)
{
field_type = frm_elements[i].type.toLowerCase();
switch (field_type)
{
case "text":
case "password":
case "textarea":
case "hidden":
frm_elements[i].value = "";
break;
case "radio":
case "checkbox":
if (frm_elements[i].checked)
{
frm_elements[i].checked = false;
}
break;
case "select-one":
case "select-multi":
frm_elements[i].selectedIndex = -1;
break;
default:
break;
}
}
我認爲這是一個非常接近我回答的答案。我想知道我們是否也可以將其掛鉤到window.unload中。 – jeef3
如果確實是一個Firefox錯誤,您可以使用onSubmit事件清除隱藏的字段。在表單代碼:
<form onSubmit="clearFieldsIfPopulated(this)">
<input type="hidden" name="field1"> <input type="submit">
</form>
JavaScript功能範例:
function clearFieldsIfPopulated(form) {
if (form.field1.value != "") {
form.field1.value == "";
}
}
如果刷新頁面,這實際上是一個問題。所以,我們有一個輸入,隱藏或以其他方式通過javascript填充值。如果用戶刷新該頁面,則該輸入由Firefox預填充值重新填充。所以當提交最終發生時,我們不知道用戶是否放在那裏或Firefox。 – jeef3
我有這個問題我自己。 Mike的回答很接近,但我認爲這並不完美:即使value
屬性可能想要設置它,它也會清空元素。
在頁面加載中,我執行以下操作。它只使用一個小的jQuery。
// Reset input elements to their HTML attributes (value, checked)
$("input").each(function(){
// match checkbox and radiobox checked state with the attribute
if((this.getAttribute('checked')==null) == this.checked)
this.checked = !this.checked;
// reset value for anything else
else this.value = this.getAttribute('value')||'';
});
// Select the option that is set by the HTML attribute (selected)
$("select").each(function(){
var opts = $("option",this), selected = 0;
for(var i=0; i<opts.length; i++)
if(opts[i].getAttribute('selected')!==null)
selected = i;
this.selectedIndex = selected||0;
});
沒有jQuery?
使用document.getElementsByTagName
選擇input
s和select
s,然後迭代它們並用iterated元素替換this
。
請使用.getElementsByTagName('option')
來選擇選項。
沒有足夠的jquery :) –
我對頁面上的表單中的密碼字段有類似的問題。
如果在頁面火狐只是自動填充密碼上的表單標籤類型的輸入標籤=密碼:
<form>
<input type='password' />
</form>
這是我用來解決這個具體問題的代碼:
$('input[type=password]').val('')
這個工作之前,但Firefox自動填充的東西,即使當'autocomplete =「off」'出現在窗體中已經得到了stupidierer!我最近發現我不得不把它放在$(window).load(function(){$('input [type = password]')。val('');});'中。 '$(document).ready()'還爲時過早,因爲表單在稍微延遲後才填滿。 – billynoah
autocomplete='off'
不會阻止無論是在輸入或形式 把
<input type='password' style='display: none;' />
之前你真正的密碼輸入。
把兩個虛擬領域中的實際用戶名字段和實際密碼字段之間的工作對我來說,例如:
<input name = "Username" type="text" autocomplete="off">
<input name = "DummyUsername" type="text" style="display:none;">
<input name = "DummyPassword" type="password" style="display:none;">
<input name = "Password" type="password" autocomplete="new-password">
這阻止了用戶名的自動填充,以及密碼的自動填充。
autocomplete =「新密碼」顯然沒有完全實現,但可以幫助一些瀏覽器。我懷疑它是否對FireFox有幫助,但在未來的版本中可以使用,以便更廣泛地採用該功能。
確認工作。它爲什麼有效?順便說一句,我沒有像你那樣把假土地夾在中間。無論如何,我更喜歡通過JS方法來清除頁面呈現中的表單......這會冒着一瞬間的內容,用戶看到表單被填滿一會兒然後被清除......一些偏執和/或天真的用戶wouldn不喜歡那樣。 – MarsAndBack
重新上限:此方法似乎禁用自動填充並保持自動填充。 – MarsAndBack
這實際上與密碼字段在Firefox:
$(window).load(function(){
$('#pass').val('');
});
什麼工作對我來說是
autocomplete="new-password"
在某些情況下,瀏覽器會不斷提示自動完成值即使autocomplete屬性是設置爲關閉。對於開發人員來說,這種意外的行爲可能會令人費解訣竅真正迫使無自動完成是一個隨機字符串分配給屬性,例如:
autocomplete="nope"
試圖在主流瀏覽器和它的作品!
這可能只是一個FF錯誤? – jeef3
這裏是其他解決方案http://stackoverflow.com/questions/25019160/disable-browsers-form-inputs-prefill-autofill-feature-when-hitting-back-button –
而問題是FF也設置用戶名,或猜測用戶名是前一個字段,通常是完全不同的東西! (我在版本56) – Savage