帮助防止在实时函数中单击默认并单击事件

时间:2010-08-03 23:56:21

标签: jquery

我有一个表单向导。在第一步,如果选中某个复选框,则需要显示警告,而如果选中某个复选框,则需要显示警告。问题是,在点击下一个按钮后,它会在第二步显示确认/警告。我需要它来防止浏览器在显示警告时移动到第二步。

$("#step0Next").live('click', function(event) {
        var ask = confirm("Do You Really Want To Continue");
        if($("#RT").is(":checked") && !$(".ex").is(':checked') &&
(ask===false)) { 
            event.preventDefault();
        } 
    });

http://www.kinetick.com/Test/purchaseTest 如果您没有进行任何选择并点击“下一步”(“#step0Next”),则会进入确认对话框的第2步。我需要在第1步发生这种情况,按下取消会让你保持在那里,点击确定将允许你继续进行第2步。我使用formToWizard.js插件,如果这很重要。

谢谢!

1 个答案:

答案 0 :(得分:1)

警告,这有点hacky并且特定于您的需求和网站(其他人发现这一点,使用其他解决方案!):

$("#step0Next").live('click', function(event) {
   $('#step1Prev').click();                                     //go back, hacky!
   if($("#RT").is(":checked") && !$(".ex").is(':checked')) {          //conditons
     if(!confirm("Do You Really Want To Continue")) return;    //user said cancel
     $("#step0Next").die('click');        //user said Ok, prevent prompting again
   }
   $(this).triggerHandler('click');                      //resume normal behavior
});

由于您无法覆盖正常的表单行为(他们的点击处理程序发生在您的.live()之前),我们只是绕过它。这会快速点击下一页的按钮,将返回转到第一页,因此我们不会阻止“下一步”行为,而是在UI更新之前将其反转。

然后,如果条件不满足,我们会提示用户确认他们的“继续”选择,但只有一次,如果他们点击取消,我们将继续提示,如果他们点击确定然后我们让他们继续前进,不要再使用.die()删除此.live()处理程序来打扰他们。