2013-05-13 122 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