2015-04-29 75 views
-4

內執行我的代碼:如何讓jQuery代碼順序

<html> 
    <head> 
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
     <script type="text/javascript"> 
      $(document).ready(function() { 
       $('form').submit(function(e) { 
        if (!$('.text').val()) { 
         e.preventDefault(); 
         console.log('error'); 
         return false; 
        } 
       }); 
      }); 
     </script> 
    </head> 
    <body> 
     <form> 
      <input type="text" class="text" value="" /> 
      <input type="submit" value="Send" /> 
     </form> 
     <script type="text/javascript"> 
      $('form').submit(function(e) { 
       e.preventDefault(); 
       $.ajax({ 
        url: 'send.php', 
        type: 'post', 
        success: function() { 
         console.log('done'); 
        } 
       }); 
      }); 
     </script> 
    </body> 
</html> 

我已經插入的JavaScript到<head><body>結束。


我的問題是,當我點擊提交按鈕,瀏覽器似乎在同一時間執行兩個我的代碼。

我不想將兩個代碼合併爲一個,我只是想執行<head>上的javascript代碼,如果發生錯誤就停止,否則它會執行<body>中的代碼。

如果你只是看看我的問題,並分享一些你學,我會非常感激。謝謝!

+1

在這種情況下,身體中的一個將首先發生,因爲它首先受到約束,僅供參考。 –

+0

要停止當前事件的所有未來事件處理程序,您需要停止ImmediatePropagation以及preventDefault。 –

+1

你爲什麼不把兩種腳本結合起來? –

回答

0

JQuery將按綁定的順序執行事件處理程序,但正如@KevinB在註釋中指出的那樣,<body>中的那個綁定首先是因爲該代碼在遇到時被執行,而在<head>被綁定第二個,因爲它是在頁面就緒事件期間執行的。

您可以重新排列代碼,以便兩個處理程序按正確順序綁定,然後在第一個處理程序中使用e.stopImmediatePropagation(),以防止第二個處理程序執行,但最好只綁定一個處理程序。

只需將一個<script>塊在<head >,並綁定一個提交處理。

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('form').submit(function(e) { 
      if (!$('.text').val()) { 
       e.preventDefault(); 
       console.log('error'); 
       $.ajax({ 
        url: 'send.php', 
        type: 'post', 
        success: function() { 
         console.log('done'); 
        } 
       }); 
      } 
     }); 
    }); 
</script> 
+0

謝謝,我將代碼插入'body'標籤的頂部,不包含'$(document).ready()'...我的問題已解決! – UserNaN

0

當您使用

.submit(處理器)

你綁定一個事件處理程序實際上你要綁定兩個處理程序。

如果你只是想驗證後發送表單 你可以驗證,然後簡單

.submit()

與jQuery的文檔,根據其不同 https://api.jquery.com/submit/

+0

感謝您的回覆 – UserNaN