2013-05-13 120 views
-1

昨天我开始研究一个jquery对话框来替换jquery所具有的缺省确认框......我遇到了一个问题,并且我看到的所有教程都告诉我在我的上使用.submit()形式,但似乎并不想发挥很好(或播放所有为此事)jquery对话框提交不工作

这是JSFIDDLE

而现在这是我的javascript是不是为我工作:

<script> 

$(document).ready(function() { 
     $(function() { 
      var currentForm; 
      $("#dialog-confirm").dialog({ 
       resizable: false, 
       autoOpen: false, 
       draggable: false, 
       height: 310, 
       width: 500, 
       modal: true, 
       buttons: { 
        'Cancel': function() { 
         $(this).dialog("close"); 
        }, 
        'Enter Queue': function() { 
         currentForm.submit(); 
        } 
       } 
      }); 
     }); 

    $("#signinform").submit(function() { 
     currentForm = this; 
     $('#dialog-confirm').dialog('open'); 
     return false; 
    }); 
}); 

</script> 

问题发生在“输入队列”按钮上。很多情况下(如jsfiddle所示)是我需要用户确认办公室的规则,如果他们这样做,他们点击一个复选框,一旦他们这样做,然后他们点击提交,然后发送一个向用户解释他们进入的对话框。但由于某些原因,“输入队列”按钮不起作用。我很困惑。任何帮助都会很棒。

感谢

回答

-1

昨晚我在jQuery网站和大量谷歌搜索的帮助下计算出来的。感谢你们的帮助和时间,它们为你解答问题。 + 1

这是我的解决方案:

<script type="text/javascript"> 

    $(document).ready(function() 
    { 
     var Form = $("#signinform"); 
     $(function() 
     { 
      $("#dialog-confirm").dialog(
      { 
       resizable: false, 
       autoOpen: false, 
       dialogClass: "no-close", 
       draggable: false, 
       height: 320, 
       width: 500, 
       modal: true, 
       buttons: 
       { 
        'Cancel': function() 
        { 
         $(this).dialog("close"); 
         Form.data("confirmProgress", false); 
        }, 
        'Submit Information': function() 
        { 
         Form.submit(); 
         Form.data("confirmProgress", false); 
        } 
       } 
      }); 
     }); 
     Form.submit(function() 
     { 
      if (!$(this).data("confirmProgress")) 
      { 
       $(this).data("confirmProgress", true); 
       $('#dialog-confirm').dialog('open'); 
       return false; 
      } else { 
       return true; 
      } 

     }); 
    }); 
    // Everything under this is the Jquery for my second Dialog that has always been working, the issue was the above dialog which is now fixed. 
$(document).on('click', "#Cancel", function(e) 
    { 
     e.preventDefault(); 
     var href = '<?php echo base_url(); ?>studentlogin_controller/studentlogin'; 
     $("#dialog-noconfirm").dialog(
     { 
      resizable: false, 
      dialogClass: "no-close", 
      draggable: false, 
      height: 320, 
      width: 500, 
      modal: true, 
      buttons: 
      { 
       "Cancel": function() 
       { 
        $(this).dialog("close"); 
       }, 
       "Go Back": function() 
       { 
        window.location.href = href; 
       }, 
      } 
     }); 
    }); 

</script> 
+0

为什么不选择现有答案?你甚至没有解释你是如何解决它的。显然他们是固定它。 – 2016-08-15 12:34:33

4

这是因为重新使用您的$(document).on('submit', "#signinform", function(e)方法 其中有e.preventDefault();的第一个指令,当你调用$('#signinform').submit();

您需要设置一个临时变量来查看您是否来自您的代码或提交按钮。

Here is a JSFiddle与工作的测试,但你应该做的事情更好=)

编辑:JavaScript是一种异步langage,这意味着你的$('#dialog-confirm').dialog('open');不阻止,只是修改HTML,所以总是提交事件将返回false - >它永远不会被发送。

所以我得到JSFiddle其实不像你想要的那样工作,但是如果你在点击Enter Queue按钮后第二次触发提交按钮,它将工作,所以我想知道为什么submit()方法不从这里打电话工作。

你可以使用的一种方法是发送带有Ajax的表单(在jquery中查看post()),然后使用类似于window.location =“yourpage”的方式重定向用户。

+0

不工作,我很害怕。我用你的指示更新了我的JSfiddle。现在发生的事情是,只需提交表单即可,无需点击对话框。 – 2013-05-13 11:48:41

+0

那么为什么这是越野车是正确的,你的e.preventDefault()搞砸了,我试图做出更好的jsfiddle – NeeL 2013-05-13 11:53:21

+0

非常感谢。 – 2013-05-13 11:53:56

2

尝试这种方式(jsFiddle):

$(document).ready(function() { 
    window.enterQueue=false; 
    $("#signinform input:submit").on('click',function() { 
     return getDialog(window.enterQueue);    
    }); 

    function getDialog(enterQueue){ 
     if(!enterQueue){ 
      $("#dialog-confirm").dialog({ 
       resizable: false, 
       autoOpen: true, 
       draggable: false, 
       height: 310, 
       width: 500, 
       modal: true, 
       buttons: { 
        'Cancel': function() { 
         $(this).dialog("close"); 
        }, 
        'Enter Queue': function() { 
         window.enterQueue=true; 
         $(this).dialog("close"); 
         $("#signinform input:submit").trigger('click'); 
        } 
       } 
      }); 
      return false; 
     } else 
      return true; 
    } 

});

+0

哇,很好的黑客与点击提交按钮:D – NeeL 2013-05-14 07:27:36

+0

但它的作品:) – khomyakoshka 2013-05-14 07:31:07

+0

感谢您的时间!我发布了我昨晚提出的答案。 +1虽然你的答案。 – 2013-05-14 11:32:07