1、寫在前面
在寫一個登陸頁面的時候,打算把表單裡input标簽的自動完成功能關閉,于是把帳号和密碼框的autocomplete屬性設定為off。由于之前登陸選擇了記住密碼,每次在chrome和firefox打開或者重新整理頁面的時候都把帳号和密碼給自動完成了。
于是乎與需求有誤差,是以随便處理了下,但是最近勞煩,決定和這問題杠上了。
以下是各種測試、各種結論、各種扯淡……
呵呵
随着chrome版本的更新,有的chrome支援重寫input:-webkit-autofill原有的屬性,有的不支援重寫。另外js也無法擷取到chrome自動填充的表單的value值,是以網上盛傳的使用jquery解決的方法也是不湊效,最多也就隻能去掉黃色背景,而自動填充的value卻被移除了。
是以各種那value值的判斷出問題了。
廢話多了,來點料才是實在(已經試過n多方法,隻貼有效地,在版本46-48下測試):
2、關閉自動填充
原理:chrome和firefox的表單自動完成是以password類型的input标簽為識别條件來建構記住密碼這個功能的,那麼在輸出頁面的時候完全可以把這個密碼框的type設定為text,然後在使用者點選密碼框輸密碼時把這個密碼框的type再變回password
<input type="text" onfocus="this.type='password'" class="" name="loginPwd">
3、去掉黃色背景
CSS:
<style type="text/css">
input:-webkit-autofill {
-webkit-box-shadow: 0 0 0px 1000px white inset;
}
</style>
4、自定義placeholder效果時顯示重疊處理
自動填充的password的輸入不觸發change事件,
是以去掉placeholder的代碼也無效;
再沒有頁面任何操作(滑鼠點選任何地方)前,也拿不到value;
效果及代碼:
html:
<form action="">
<ul class="ul">
<li class="li">
<div class="ipt_box ipt_long nick_name phfl">
<i class="ico"></i>
<label class="placeHolder">請輸入賬号</label>
<input type="text" class="" name="loginName">
</div>
<div class="error"><i class="ico"></i>手機或郵箱格式不正确</div>
</li>
<li class="li">
<div class="ipt_box ipt_long pwd phfl">
<i class="ico"></i>
<label class="placeHolder">請輸入密碼</label>
<input type="password" class="" name="loginPwd">
</div>
<div class="error"><i class="ico"></i>密碼長度6~16位</div>
</li>
</ul>
<div class="operate">
<span onclick="javascript:G.login.doLoginStep1();" class="btn">登入</span>
</div>
</form>
處理方式:判斷使用者名被自動填充的話,将密碼框的placeholder也去掉。
<script type="text/javascript">
$(function(){
$(".phfl input").eq(0).change(function (){
var _t = $(this);
if(_t.val() != "")
$(".login_div .placeHolder").hide();
}
}).change();
})
</script>
這麼作弊會不會被罵啊?管不了那麼多了,切合自己的需求來處理好才是王道。下面貼上用setTimeout處理的方法,不過延遲執行的時間比較坑:小了沒效果,大了重疊層出現一段時間後才顯示正常……是以我用了20(一閃而過,還記的那個詞吧(
你傷害了我,卻一笑而過
))
<script type="text/javascript">
$(function(){
setTimeout(function(){
var _t = $(".phfl input").eq(0);
if(_t.val() != ""){
$(".login_div .placeHolder").hide();
}
}, 20);
})
</script>
至此,你也看得夠多的了,自己玩玩吧。
ps:鑒于個人經驗有限,所有觀點,如有異議,請直接回複讨論(請勿發表攻擊言論)。
加入QQ群209952809(需回答問題,答案為csdn);群聊更快解決問題,更happy。