最近遇到客戶出的難題,登錄和密碼框不要自動代填已經保存過的密碼,本以為在輸入框加個
autocomplete="off"
<input type="text" name="login_name" value="" autocomplete="off" placeholder="請輸入用戶名"/>
就完事,沒想到這個只能屏蔽歷史輸入,已保存的用戶信息在火狐瀏覽器還是如此的倔強,如圖所示:


還是要回顯提示,已經存過的其他賬號,網上溜達了一圈,還是沒有一個明明白白的答案,后來經過反復調試,
發現輸入框是文本和password類型就會觸發火狐瀏覽器的自動回顯,
網上也給過在輸入框上加上onfocus事件來更改輸入框類型的方案:
<input type="text" onfocus="this.type=password" />
但邏輯還是不夠嚴密,我輸錯了密碼再回刪,它又會回顯出來,表單提交后刷新也會,最后經過不斷嘗試,給出的解決方案如下:
//當把登錄輸入框和密碼輸入框的type設置為search是不會觸發的
<input type="search" name="login_name" value="" autocomplete="off" placeholder="請輸入用戶名"/>
<input type="search" id="password"name="login_passwd" value="" autocomplete="off" placeholder="請輸入密碼"/>
...
//
<script type="text/javascript">
$(document).ready(function() {
//表單刷新后,頁面初始化時重新將密碼框的類型改為search
//此處要用js原生代碼,jQuery沒有權限更改input框的type屬性
document.getElementById('password').setAttribute('type','search');
});
//通過密碼框輸入的值長度來設置它的類型
//防止密碼回刪后的回顯
jQuery("#password").bind("keyup",function(){
var self=this;
//加延時的目的是等keyup事件執行完
setTimeout(function () {
var len = $(self).val().length;
if(len==0){
document.getElementById('password').setAttribute('type','search');
}else {
document.getElementById('password').setAttribute('type','password');
}
}, 1);
});
</script>
