9

我们大多数使用结合 ajax 的表单可能会注意到用户提交的输入在以后的会话中没有被浏览器保存/建议。当涉及到“登录”页面时,这是一个失败。浏览器通常会提供保存用户名/密码的功能,这非常方便,但使用 ajax 表单提交......好吧,你知道,这不会发生。

我在这里看过两次这个问题,但仍然没有答案。自从被问到已经有大约 9 个月了,我知道这里有很多聪明人。所以....我决定重新提出这个问题。

我们能做些什么来解决这个问题?我们能以某种方式欺骗浏览器吗?

我愿意为此来回工作,因为我知道有一个工作解决方案供我们所有人使用会很好。

最终解决方案基于 slashingweapon 的答案谢谢!)

HTML - 使用自定义按钮提交,没有表单“操作”或“方法”,只有 ajax

<form id="signin">

    <label for="username">Username</label>
    <input type="text" id="username" name="username" />

    <label for="password">Password</label>
    <input type="password" id="password"  name="password" />

    //Custom Styled Submit Button
    <img id="submit" class="form_button" src="btn_txt_sign_in.png" alt="Sign In" tabindex="3" />

    //Hidden Standard Form Submit Button
    <input id='trigger' type='submit' style='display:none;' />

</form>

jQuery

// Bind a click to the Custom Submit Button
$('#submit').click( function() {
    //Trigger a Click on the Hidden Standard Form Submit 
    $('#trigger').click();
});

// Detect when the form attempts to be submitted
$('#signin').submit( function(e){
    // Prevent Standard Form Submission
    e.preventDefault();
    // Perform Function containing Ajax Submission instead
    submit_signin();
});

// Ajax Submission
function submit_signin() {
    //My Ajax Call....
}
4

1 回答 1

8

单击任何提交类型的按钮时,将提交封闭的表单。您可以选择处理提交事件而不是按钮的单击事件。这是一个例子:

$('#demoForm').submit(function(evt) {
    evt.preventDefault();
    var data = $(this).serialize();
    alert(data);
});​

也有适合你的小提琴

通过捕获稍后的事件,您将确保至少某些浏览器有机会存储表单数据以供将来自动填充。

于 2012-11-27T18:38:42.247 回答