【问题标题】:Standard Form Submit vs Ajax Form Submit - Browser Auto Save/Suggest User Input标准表单提交与 Ajax 表单提交 - 浏览器自动保存/建议用户输入
【发布时间】:2012-11-27 13:46:44
【问题描述】:

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

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

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

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

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

HTML - 使用自定义按钮提交,没有表单'action'或'method',只有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....
}

【问题讨论】:

  • 您是如何提交表单的?绑定到表单的 submit 事件并在那里使用 AJAX 对我有用...
  • @JanHančič 我正在使用序列化从表单中获取数据,并通过 ajax 发布。我没有对表单本身使用“方法”或“操作”,因为不应重新加载页面或移动到另一个页面。表单本质上只是用于捕获输入,而Ajax用于将数据发布到PHP并动态返回结果。
  • 我认为 Jan 的问题是,您使用什么事件来指示表单提交?你在使用提交事件吗?还是按钮点击事件?
  • @slashingweapon 我在自定义按钮上使用点击事件。我没有使用标准的
  • 使用提交按钮而不是自定义按钮。捕获表单的提交事件而不是按钮单击事件。

标签: ajax forms jquery submit


【解决方案1】:

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

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

你也有一个Fiddle

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

【讨论】:

  • 这很有意义..我使用提交输入或提交按钮是否重要?只要我使用 type='submit' 我就会接受它,我应该很好......对吗?我也假设我可以使用自定义按钮/单击来触发提交按钮...
  • 我稍后会实现它并查看结果。如果一切顺利,我会接受答案。谢谢!
  • 我认为在这种情况下输入元素和按钮元素之间没有任何真正的区别。
  • 这似乎适用于最新版本的 FireFox (24.0) 但不适用于 Chrome (30.0.1599.101)
猜你喜欢
  • 1970-01-01
  • 2018-12-11
  • 2023-03-06
  • 2015-08-07
  • 1970-01-01
  • 2012-10-28
  • 2012-06-23
  • 2013-10-21
相关资源
最近更新 更多