jquery我提交表单后,第二个只是发布到页面而不是ajax提交

时间:2009-12-17 16:07:39

标签: jquery ajax

好吧,基本上我的问题就是我在标题中所说的。我正在使用jquery选项卡,在我提交1个表单之后我又想添加另一个新闻帖而不是做ajax提交它只是发布到页面。

<script type="text/javascript">

    //if submit button is clicked
    $('#submit').live("click",function () {     
        //Get the data from all the fields
        var title = $('input[name=title]').val();
        var newspost = tinyMCE.get('newspost').getContent();
        var type = $('input[name=type]').val();

        //Simple validation to make sure user entered something
        //If error found, add hightlight class to the text field 

        //organize the data properly
        var data = 'title=' + title + '&post=' + newspost + '&id=' + type;
        //start the ajax
        $.ajax({
            //this is the php file that processes the data and send mail
            url: "pages/news.php",  

            //GET method is used
            type: "POST",

            //pass the data         
            data: data,     

            //Do not cache the page
            cache: false,

            //success
 success: function() {  
     $('#news_form').html("<div id='message'></div>");  
     $('#message').html("<h2>News Article has been Submitted!</h2>")  
     .append("<p>Now visable on main page</p>")  
     .hide()  
     .fadeIn(1500, function() {  
       $('#message').append("<img id='checkmark' src='images/check.png' />");  
     });  
            }       
        });

        //cancel the submit button default behaviours
        return false;
    }); 
 </script>
<div id="news_form">
<form id="form1" name="form1" method="post" action="">
  <p>Title:
    <label>
      <input name="title" type="text" id="title" size="40" />
    </label>
  </p>
  <p>
    <label>
      <textarea name="newspost" id="newspost" cols="45" rows="5"></textarea>
    </label>
  </p>
  <p><input type="hidden" name="type" value="postadd" />
    <label>
      <input type="submit" value="Submit" id="submit">
    </label>
  </p>
</form>
</div>

5 个答案:

答案 0 :(得分:1)

返回false不会阻止默认操作;请尝试event.preventDefault

答案 1 :(得分:1)

您是否尝试过在表单上监听.submit()事件?

另外,请确保页面上没有重复的ID。

答案 2 :(得分:0)

为完整起见,您可以考虑以下事项:

event.preventDefault();
event.stopPropagation();
if ($.browser.msie) {
    event.originalEvent.keyCode = 0;
    event.originalEvent.cancelBubble = true;
    event.originalEvent.returnValue = false;
}

虽然我有点夸张,因为我通常会鼓励功能检测,而不是浏览器嗅探(if ($.browser.msie) {...

另外,注意到你的第一行:

$('#submit').live("click",function () { 

虽然它可能没有什么区别,但我看不出你需要live()。当然.click()应该足够吗?

答案 3 :(得分:0)

尝试将提交按钮更改为常规按钮。如果您使用AJAX处理它,则不需要默认的提交行为。

<input type="button" value="Submit" id="submit">

或者,如果你想保持原样,你应该在你的点击功能中输入false,而不是在AJAX成功函数中。

答案 4 :(得分:0)

我有一个tinyMCE安装了我的编辑器。一旦我将其删除,我就可以连续多次发布。