在網上看到這種方式,沒有親試:
1.禁止谷歌瀏覽器默認填充和保存密碼
瀏覽器保存密碼是根據input="password"來判斷的,所有我們只要保證瀏覽器在dom結構中識別不到密碼框即可。
so:
-->密碼輸入位置默認為input="text"。
-->在輸入框上添加 onfocus="this.type='password'" 輸入框獲得焦點時改變輸入框格式為密碼框
-->輸入密碼
-->在提交前清空輸入框密碼,並修改密碼框為文本框。(我的提交為發生Ajax提交,可根據自己實際情況進行調整,或者情況密碼之后,將值保存在一個隱藏域中,再提交單)
-->commit。
2). IE8+、Chrome、FF、360測試通過。(ie8會出問題的,input的type屬性不能修改)
3). 其實寫這段代碼的時候只是為了禁止Chrome保存密碼,對於其他瀏覽器只是驗證是否正常顯示。
4). 此方法不針對通過js向密碼框輸入密碼的情況,因為js輸入不觸發獲得焦點事件。
3.設置隱藏域
<input type="password" name="txtPassword" style="display:none">
<input type="password" name="txtPassword" placeholder="請輸入密碼" autocomplete="off" />
谷歌瀏覽器比較吊,只加上一個隱藏密碼框還是不行的,把兩個密碼框名字改成一樣的就好了,這家伙就找不到了,(*^__^*) 嘻嘻……
再給大家分享一個解決方案,有需要的可以試一試
<input type="password" style="display:none;width:0;height:0;">
<input data-placeholder="請輸入密碼" name="password" data-required="true" type="password" autocomplete="new-password" data-max-length="50" tabindex="2" spellcheck="false" id="auto-id-1505904797992" placeholder="請輸入密碼">
先輸入一個隱藏文本域,再輸入第二個展示的文本框,重點是我加黑的字體,編譯器可能會無法識別,但是瀏覽器可以解析。
鏈接:https://www.zhihu.com/question/23529765/answer/140579951
- input:-webkit-autofill {
- background-color: #FAFFBD;
- background-image: none;
- color: #000;
- }
情景一:input文本框是純色背景的
可以對input:-webkit-autofill使用足夠大的純色內陰影來覆蓋input輸入框的黃色背景;如:
- input:-webkit-autofill {
- -webkit-box-shadow: 0 0 0px 1000px white inset;
- border: 1px solid #CCC!important;
- }
如果你有使用圓角等屬性,或者發現輸入框的長度高度不太對,可以對其進行調整,除了chrome默認定義的background-color,background-image,color不能用!important提升其優先級以外,其他的屬性均可使用!important提升其優先級,如:
- input:-webkit-autofill {
- -webkit-box-shadow: 0 0 0px 1000px white inset;
- border: 1px solid #CCC!important;
- height: 27px!important;
- line-height: 27px!important;
- border-radius: 0 4px 4px 0;
- }
情景二:input文本框是使用圖片背景的
這個比較麻煩,目前還沒找到完美的解決方法,有兩種選擇:
1、如果你的圖片背景不太復雜,只有一些簡單的內陰影,那個人覺得完全可以使用上面介紹的方法用足夠大的純色內陰影去覆蓋掉黃色背景,此時只不過是沒有了原來的內陰影效果罷了。
2、如果你實在想留住原來的內陰影效果,那就只能犧牲chrome自動填充表單的功能,使用js去實現,例如:
- $(function() {
- if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0) {
- $(window).load(function(){
- $('ul input:not(input[type=submit])').each(function(){
- var outHtml = this.outerHTML;
- $(this).append(outHtml);
- });
- });
- }
- });
遍歷的對象可能要根據你的需求去調整。如果你不想使用js,好吧,在form標簽上直接關閉了表單的自動填充功能:autocomplete=”off”。