JQuery после того, как я отправляю форму, вторая просто отправляет на страницу вместо ajax submit - PullRequest
0 голосов
/ 17 декабря 2009

Хорошо, в основном моя проблема в том, что я указал в названии. Я использую вкладки 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 ]

1 голос
/ 17 декабря 2009

Вы пытались прослушать событие .submit () в самой форме?

Также убедитесь, что на странице нет повторяющихся идентификаторов.

1 голос
/ 17 декабря 2009

Возврат false не помешает действию по умолчанию; вместо этого попробуйте event.preventDefault .

0 голосов
/ 17 декабря 2009

У меня tinyMCE установлен мой редактор. После того, как я удалил его, я смог опубликовать столько раз подряд, сколько хотел.

0 голосов
/ 17 декабря 2009

Попробуйте изменить кнопку отправки на обычную кнопку. Вам не нужно поведение отправки по умолчанию, если вы обрабатываете его с помощью AJAX.

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

Или, если вы хотите оставить все как есть, вы должны поместить return false в свою функцию щелчка, а не в функцию успеха AJAX.

0 голосов
/ 17 декабря 2009

Для полноты вы можете рассмотреть следующее:

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 () должно хватить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...