2010-11-07 45 views
9

我在我的網絡應用程序中使用以下登錄表單。它在IE7,FF3.6和Chrome7.0中工作正常。除了Chrome似乎無法將此表單識別爲登錄表單並因此不提供保存用戶名/密碼的事實。 FF和IE都提供我記住用戶名/密碼。爲什麼chrome無法識別此登錄表單?

這裏的形式:

<form name="login_form" id="login_form" action="" method="POST" onsubmit="javascript:handleFunction('action_login', document.getElementById('user_name_id').value, document.getElementById('password_id').value); return false;"> 
    <div class="login_line">name<input name="user_name" id="user_name_id" size="16" maxlength="16" value= "" type="text"></div> 
    <div class="login_line">password<input name="password" id="password_id" size="16" maxlength="16" type="password"></div> 
    <div class="login_line"><input type=submit class="icon icon_accept" value="login"></div> 
</form> <!-- login_form --> 

編輯:使用jQuery(不能始終如一地爲你所看到的),qTip(對任何登錄錯誤)和xajax的(如Ajax框架)。 handleFunction如下:

function handleFunction (functionName) 
{ 
    // remove any static qtip from screen 
    if ($('#qtip_close_button').length) 
    { 
     // click on close button of qtip 
     $('#qtip_close_button').click(); 
    } 

    // remove the first argument from the arguments list 
    var argArray = $.makeArray(arguments).slice(1); 

    xajax.request({ xjxfun : functionName }, { parameters : argArray }); 
} 

感謝您的任何建議!

順便說一句:我檢查了我的主機是否在Chrome的已保存的密碼例外列表中。不是這樣。

回答

4

我認爲這是因爲表單實際上並未被「提交」。如果您檢查onsubmit屬性,您可以看到它在最後返回false,從而取消提交。

+0

當我刪除「返回false」,登錄不成功(只是測試它,以確保) – jzp74 2010-11-07 20:22:28

+1

是,它不會當您刪除返回false工作。你將需要重寫你的代碼。 Chrome不提供保存來自未提交作爲安全功能的表單的密碼。如果你想保存密碼功能工作,你將不得不拋棄整個花哨的AJAX登錄。 – Kranu 2010-11-08 04:02:17

+2

@Kranu你提到的這個安全問題是什麼?我不認爲這是一個安全功能;這只是我們必須處理的另一種瀏覽器垃圾。 – 2012-05-11 17:27:19

2

你必須提交表單兩次:

  1. 一個用JS驗證
  2. 和普通的POST表單之後。

Here is the solution

+0

Chrome 46修復了錯誤的行爲 - 不再需要解決方法。請參閱https://stackoverflow.com/a/33113374/810109 – mkurz 2015-10-14 12:07:51

相關問題