2010-11-07 47 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

相关问题