1

我正在构建一个联系表单,我想通过 ajax 提交数据并通过相同的方式显示结果。但是每当用户点击提交按钮时,页面似乎会自动提交。我也使用了 jquery 的preventDefaultstopPropogation。但它仍然无法正常工作。我是 jQuery 新手,我可能会遗漏一些小东西。这是代码:

形式

<form action="#" method="post" accept-charset="utf-8" name="contactform" id="contactform">
        <p>Name<br/><input type="text" name="cname" value="" id="cname" required /></p><br/>
        <p>Email<br/><input type="email" name="cemail" value="" id="cemail" required /></p><br/>
        <p>Message<br/><textarea name="cmessage" cols="40" rows="10" id="cmessage" required ></textarea></p>

        //Re-captcha code here
        <p><input type="submit" name="contact_submit" value="Submit" id="contact_submit"  /></p>
        </form> 

        <br />
        <div id="result"></div>

脚本

$(document).ready( function(){
$("#contact_submit").click( function(e){

   e.preventDefault();
   e.stopPropagation();




 });

 $("#result").html('');

 $("#contactform").validate();


 });

我已经包含了 jQuery Validation Plugin,它也不起作用。

4

4 回答 4

5

您真正想要的是捕获submit(), 和preventDefault()

$('#contactform').submit(function(e){
    e.preventDefault();
});
于 2013-07-03T19:10:55.763 回答
3

jQuery 需要一个#来识别 id 和.for 类。

如果您不想提交表单,请使用:

$("#contactform").on('submit', function(e){

    alert("not submited");
    return false;

    });
于 2013-07-03T19:11:11.140 回答
0

有几件事你可以看看。首先,从 type="submit" 更改为 type="button"。无需提交即可为您提供所有相同的功能。其次,如果你试图让它在 IE 中工作,它不起作用,因为 IE 在事件对象上没有 preventDefault 方法。您只需将 returnValue 设置为 false。

$("#contactform").submit( function(e){
   e.stopPropagation();
   if(e.preventDefault){
      e.preventDefault();
   }else{
      e.returnValue = false;
   }
});
于 2013-07-03T19:14:33.560 回答
0

塞尔吉奥是对的。

此外,点击监听器也永远不会在输入上工作,正确的选择器是

$('input[name="contact_submit"]')
于 2013-07-03T19:17:42.437 回答