2013-11-22 226 views
0

我是JavaScript和jquery的新手,並且希望在提交之前檢查表單中的字段。但即使從How to do something before on submit?採取一個簡單的例子不起作用。我沒有在Firefox中發出警報,也沒有在web開發者控制檯中看到任何錯誤。看代碼:簡單的jquery不工作

<html> 
<head> 

<script src="jquery.min.js"></script> 
<script type="text/javascript"> 
$('#myForm').submit(function() { 
    alert('Handler for .submit() called.'); 
    return false; 
}); 
</script> 
</head> 

<body> 


<form id="myForm" action="foo.php" method="get"> 
    <input type="text" value="" /> 
    <input type="submit" value="submit form" /> 
</form> 



</body> 
</html> 

當然,在同一個文件夾中有「jquery.min.js」。

+4

確保將代碼包裝在'document.ready'事件中**或**在關閉'body'標籤前添加腳本。 – elclanrs

+1

您需要一個'DOM ready handler'來包裝您的代碼。有關這方面的更多信息,請參閱[這裏](http://learn.jquery.com/using-jquery-core/document-ready/)。 – Nunners

+1

我推薦閱讀[jQuery的文檔](http://learn.jquery.com/about-jquery/how-jquery-works/)。它說:*「爲了在文檔準備好被操作時立即運行代碼,jQuery有一個稱爲ready事件的語句」*。 –

回答

3

您需要添加腳本在DOM準備處理

jQuery(function() { 
    $('#myForm').submit(function() { 
     alert('Handler for .submit() called.'); 
     return false; 
    }); 
}) 
1

當執行js代碼,html元素必須已經存在。要延遲代碼STRAT,如上使用document.ready

<script type="text/javascript"> 
$(document).ready(function(){ 
    $('#myForm').submit(function() { 
    alert('Handler for .submit() called.'); 
    return false; 
    }); 
}); 
</script> 

注:語法$('#myForm').submit(function() {已經過時,應該可能是由$(document).on("submit", "#myForm", function() {或類似的東西:)

編輯被替換:也爲你問什麼,請參閱有關e.preventDefault()的javascript文檔,這對您想要的內容也可能有用:)

1

這也可以工作,在元素已經添加到DOM之後設置腳本:

<html> 

    <head> 
     <script src="jquery.min.js"></script> 
    </head> 

    <body> 
     <form id="myForm" action="foo.php" method="get"> 
      <input type="text" value="" /> 
      <input type="submit" value="submit form" /> 
     </form> 
     <script type="text/javascript"> 
      $('#myForm').submit(function() { 
       alert('Handler for .submit() called.'); 
       return false; 
      }); 
     </script> 
    </body> 

0
<html> 
    <head> 
    <script src="jquery.min.js"></script> 
    <script type="text/javascript"> 
    $(document).ready(function(){ 
    $('#myForm').submit(function() { 
     alert('Handler for .submit() called.'); 
     return false; 
    }); 
    }); 
    </script> 
    </head> 
    <body> 
    <form id="myForm" action="foo.php" method="get"> 
     <input type="text" value="" /> 
     <input type="submit" value="submit form" onsubmit="submit" /> 
    </form> 
</body> 
</html> 

演示:http://jsfiddle.net/kapil_dev/6Tf7Y/

1

你應該嘗試e.preventDefault();而不是return false;

$(function() { $('#myForm').submit(function(e) { e.preventDefault(); alert('Handler for .submit called.'); }); });

因爲有時return false;一些代碼可能不會有效的jquery