我有一个单选按钮列表,我可以使用javascript切换“是”或“否”。
$(document).ready(function(){
$('#select-all').click(function(){
$('#notifications .notif-radio').each(function(){
$('input[type="radio"]', this).eq(0).attr('checked', true);
$('input[type="radio"]', this).eq(1).attr('checked', false);
});
});
$('#deselect-all').click(function(){
$('#notifications .notif-radio').each(function(){
$('input[type="radio"]', this).eq(0).attr('checked', false);
$('input[type="radio"]', this).eq(1).attr('checked', true);
});
});
});
这很好用。现在我有一段独立的代码可以检测用户何时更改了某些内容。并问他们是否想离开页面。
var stay_on_page;
window.onbeforeunload = confirm_exit;
$('.container form input[TYPE="SUBMIT"]').click(function(){
stay_on_page = false;
});
$('#wrapper #content .container.edit-user form').change(function(){
stay_on_page = true;
});
function confirm_exit()
{
if(stay_on_page){ return "Are you sure you want to navigate away without saving changes?"; }
}
问题在于,如果用户使用第一个功能来以这种或那种方式切换所有单选按钮。 JS检测表单更改没有看到表单已更改。我曾尝试使用.live,但无济于事。有人有什么想法吗?
答案 0 :(得分:0)
我通过添加change()(或任何适当的,在我的情况下单击()来做类似的事情)事件处理程序设置可见或隐藏字段值,然后检查该值作为onbeforeunload函数的一部分
所以,我在卸载之前看起来像:
window.onbeforeunload = function () {
if ($('#dirtymark').length) {
return "You have unsaved changes.";
}
};
当然,当页面变脏时,脏标记被添加到页面(保存按钮附近的红色星号)。