【发布时间】:2013-03-20 11:56:41
【问题描述】:
我的 html 页面上有一个用于更新一些自定义数据的表单。在提交表单之前,我想向用户询问确认消息,如果他更新了表单中的数据并单击同一 html 页面上的其他链接。
我是如何实现的:
我已经创建了布尔变量来保持用户是否更新了任何字段的状态。我已经使用jquery在html页面中绑定了所有anchor标签的click事件。这样当用户单击页面上的任何锚标记时,我将检查状态变量是否为真(值已更改)。如果是真的,我想停止重定向并要求确认。
到目前为止,我已经完成了。但问题是即使用户点击确认框的cancel,我也无法停止重定向。
这里是代码
$(document).ready(function(){
GLOBAL_NAMESPACE.value_changed = false;
$("[id^='id_']").live('change', function (){
GLOBAL_NAMESPACE.value_changed = true;
});
});
$('a').bind('click',function (e) {
e.preventDefault();
if (GLOBAL_NAMESPACE.customize_option_changed){
var res = confirm('you have unsaved changes. Do you want to continue?');
if(res){
GLOBAL_NAMESPACE.customize_option_changed = false;
$(this).click();
}else{
console.log('stay on same page...');
// Problem: user redirects to the clicked link even if he reaches here
}
}
});
我的实现思路有问题吗?这段代码有什么问题?或者有没有更好的方法来做到这一点?
【问题讨论】:
-
这没什么问题。
-
在锚点上调用 click() 不会使浏览器跟随链接。使用
window.location.href = $(this).attr('href')。 -
$(this).click() 指的是您的绑定方法。看看这个答案stackoverflow.com/questions/3619214/…
-
@Flauwekeul:谢谢!我会做那个修改。但我的问题是,如果用户单击确认对话框的取消按钮,我无法停止重定向。