2013-11-22 167 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