我有一个分为5个步骤的表格。目前,如果您在步骤2-4中刷新/退出/关闭等,它将通过window.onbeforeunload返回一条消息,没有问题。
window.onbeforeunload = function () {
if ( $("#step1").is(":visible") || $("#step2").is(":visible") || $("#step3").is(":visible") ) {
return 'Using the browsers back, refresh or close button will cause you to lose all form data. Please use the Next and Back buttons on the form.';
}
}
现在我需要在step0(第一步)添加相同或相似类型的行为,如果选中复选框“A”并且复选框“B”不是。这有效,但不能与另一个.onbeforeunload函数结合使用
window.onbeforeunload = function () {
if ( $("#A").is(":checked") && $("#B").is(":not(:checked)") ) {
return 'Message here. Do you wish to continue?';
}
}
我如何将这两者连在一起?使用if,else语句似乎不起作用。
答案 0 :(得分:3)
您可以将它们组合在一个函数中:
window.onbeforeunload = function () {
if ( $("#A").is(":checked") && !$("#B").is(":checked") ) {
return 'Message here. Do you wish to continue?';
}
if ( $("#step1, #step2, #step3").filter(":visible").length) {
return 'Using the browsers back, refresh or close button will cause you to lose all form data. Please use the Next and Back buttons on the form.';
}
}
我简化了您的其他选择器以抓取所有元素,.filter()
仅:visible
个,并查看是否有任何(.length
> 0),这只是一个更容易 - 保持这种方式。
此外,您可能需要向第一个if
添加额外的检查,确保您正在执行该步骤,如下所示:
if ($('#step0').is(':visible') && $("#A").is(":checked") && !$("#B").is(":checked") ) {