2016-08-04 77 views
2

对于我的登录表单firefox保存但铬不提示“保存密码”框。我尝试了添加autocomplete =“on”,但它不起作用。任何人都可以告诉我答案。我不想使用任何扩展。我的代码如下。Firefox保存密码,但铬不保存登录表单的密码

<form spellcheck="false" autocomplete="on" id="login-form" action="/user/login/do-login" method="post"> 
       <div class="separator-bar"></div> 
       <div class="credentials-container"> 
        <div class="username-container"> 
         <div class="label">Email/Username: </div> 
         <div class="field"> 
          <input class="wx-input" type="text" name="<?php echo $this->escape(App_Api_User::ARG_USERNAME)?>" value="<?php if(isset($this->username)) {echo $this->username;}?>" spellcheck="false"/> 
         </div> 
        </div> 
        <div class="password-container"> 
         <div class="label">password: </div> 
         <div class="field"> 
          <input class="wx-input" type="password" name="<?php echo $this->escape(App_Api_User::ARG_PASSWORD)?>"/> 
         </div> 
        </div>  
       </div> 

       <div class="separator-bar bottom"></div> 
       <div class="forgot-password-container"> 
        <div class="text">forgot password: </div> 
        <div class="password-page button"><a class="loginForgotPassword" href="#">CLICK HERE</a></div> 
       </div> 

       <div class="submit-container"> 
        <input class="login button disabled" type="submit" name="submit" value="GO" /> 
       </div> 
       <div id="infoMessageContainer"> 

       </div> 

       <div class="general-error"></div> 

      </form> 

$('body').on('click', '.submit-container .login', function(e) { 
      if ($(this).hasClass('disabled')) { 
       e.preventDefault(); 
       e.stopPropagation(); 
      }else{ 
       var self = this; 
       self.submit(); 
      } 
     }); 

_success: function() 
    { 
     window.location.href = '/user';  
    } 

回答

0

我做了很多改变,然后最终使用下面的代码块。 希望它能帮助别人。您需要使用此代码提交表单。

 var winNav = window.navigator, 
     isIOSChrome = winNav.userAgent.match("CriOS"); 
     var isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1; 
     //Use below if statement, if you want to run only in chrome 
     if(isChrome || isIOSChrome){ 
      $('#login-form').submit(function() { 
       if(-1 !== this.action.indexOf('/login')) { 
        var jForm = $(this); 
        $.post(this.action, $(this).serialize(), function (data) { 
         if (data.success == true) { 
          jForm[0].action = '/user'; 
          jForm.submit(); 
         } 
        }); 
        return false; 
       } 
      }); 
     } 
1

所有浏览器都使用启发式知道何时保存密码。我熟悉Firefox和Chrome。他们使用的启发式似乎是:

  • 形式必须有一个密码字段
  • 假设密码字段之前是用户名
  • 只有那些两个输入字段保存的文本输入。当你填写一个带有两个密码字段的表单时,Firefox会提示你 它能记住你更改的密码。

这里的事情的清单,我通常看到打破这些算法:使用自动完成

  • 网站= OFF(特别请求 浏览器不记得密码)
  • 分离登录到多个页面在一个页面上输入用户名并在下一个页面输入密码。
  • 使用JavaScript这些字段的内容到隐藏 领域复制在一个隐藏的表单,然后提交隐藏的形式,而 比可见光的形式
  • 需要两个以上领域要填写如 用户名, SSN和密码 用户名,密码和PIN
  • 更改用户名和密码字段 的名称定期(导致Firefox不再能够填补 密码,即使被记住)。
+0

我的密码保存问题与铬浏览器。我已经验证了所有上述规则,但它不适用于我。请任何其他解决方案。 – Abhijit

+0

我有同样的问题,有人请帮忙。 –

+0

@dave大师,我已经发布了这个问题的答案。 – Abhijit