как получить доступ к объекту события и форме данных (метод ...) при отправке формы - PullRequest
0 голосов
/ 16 февраля 2012

Я пытаюсь обновить сайт javascript до сайта Jquery Mobile.Мне нужно предотвратить отправку формы по умолчанию для запуска процедуры проверки и запуска отправки формы ajax.

У меня есть следующее:

HTML

<form name="LoginForm" id="LoginForm" action="some.html" method="post">
  ...
  <input type="submit" onClick="routine('true')" />
</form>

Jquery:

function rountine(isit){
   if(isit == "true"){
      document.LoginForm.action = "some.html"; 
      }
   console("rountine triggered");

   $("#LoginForm").submit(function(event, data){
       console.log("submission triggered");
       console.log(event);
       console.log(data);
       event.preventDefault();  
       });
 };

Вопрос: Я получаю только первое консольное сообщение.Форма не отправлена, но больше ничего не отображается на консоли.Что я делаю неправильно?Также мне нужно переопределить action или я могу опустить его в части HTML и, возможно, установить его динамически в моей функции рутин?

Спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

ваша линия:

$("#LoginForm").submit(function(event, data){

Настраивается ли обработчик событий для отправки формы ... см. http://api.jquery.com/submit/

Сделай так:

<form name="LoginForm" id="LoginForm" action="some.html" method="post">
  ...
  <input type="submit"/>
</form>

$(document).ready(function() {
  $("#LoginForm").submit(function(event){
     // actions you want to perform on the form submitting
     if(isit == "true"){
        document.LoginForm.action = "some.html"; 
     }
     console("rountine triggered");
     console.log("submission triggered");
     console.log(event); // event is an object - dont expect much in the console
     event.preventDefault();  
   });
});

Это настроит слушателя отправки, и код в функции будет выполнен при отправке - event.preventDefault(); предотвратит отправку формы.

0 голосов
/ 16 февраля 2012

Что вы делаете, это добавляете обработчик к событию, а не выполняете его. Поэтому, как только вы добавите этот обработчик, вы должны увидеть и все остальные сообщения консоли.

$("#LoginForm").submit(function() {
  .. // This will get executed when submit is pressed
});

Чтобы вызвать событие отправки, вызовите $("#LoginForm").submit() без аргументов, что инициирует событие отправки.

...