【发布时间】: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 我在自定义按钮上使用点击事件。我没有使用标准的
-
使用提交按钮而不是自定义按钮。捕获表单的提交事件而不是按钮单击事件。