JQuery отправить форму - PullRequest
       3

JQuery отправить форму

12 голосов
/ 03 сентября 2010

Моя цель: Когда отправлено сообщение для:

  • выполняется проверка формы: OK
  • ajax вызывается для просмотра этого имени пользователя ипароль действительно совпадает: OK
  • , если они не совпадают, отобразить ошибку: OK
  • , если они совпадают, тогда ДЕЙСТВИТЕЛЬНО ОТПРАВИТЬ форму: НЕ ОК .

На самом деле проблема в том, что я не могу отправить форму, поскольку на ней есть событие отправки jquery!

function form1Submit() {
var username=$('#username').val();
var password=$('#password').val();
if (username.length<2) {
    return false;
}
if (password.length<2) {
    return false;
}
$.post("check.php", { username: username, password:password }, function(data) {
    if (data=="ko") {
        alert('bad password');
        return false;
    } else {
    //to be done here !
    }
});
    return false;
}
function init() {
   $('#form1').submit(function(){
        return form1Submit();
    })
}
$(document).ready(function(){
    init();
})

Ответы [ 4 ]

9 голосов
/ 03 сентября 2010

Вы можете вызвать собственное событие отправки, так что сделайте это:

$('#form1').submit(form1Submit);

Тогда в вашем посте обратный звонок сделайте это:

$.post("check.php", { username: username, password:password }, function(data) {
    if (data=="ko") {
        alert('bad password');
    } else {
        this.submit();
    }
});

this.submit() не вызывает jQuery .submit() триггерную функцию, а скорее собственную <form> .submit() функцию.

1 голос
/ 03 сентября 2010
function form1Submit(ev, ok) {

  ev.stopPropagation();

  ok = (typeof ok != 'undefined') ? ok : false;

  if (ok)
    return true;

  var username=$('#username').val(),
      password=$('#password').val(),
      selfForm = this;

  if (username.length < 2)
    return false;

  if (password.length < 2)
    return false;

  $.post("check.php", { username: username, password:password }, function(data) {
    if (data=="ko") {
      alert('bad password');
    } else {
      $(selfForm).trigger('submit', [true]); // again submit but with ok parameter
    }
  });

  return false;
}

function init() {
   $('#form1').bind('submit', form1Submit);
}

$(document).ready(function(){
    init();
})
1 голос
/ 03 сентября 2010

Проблема в том, что form1Submit всегда возвращает false.

1 голос
/ 03 сентября 2010

return false блокирует действие отправки формы по умолчанию.Вы можете либо - return true из функции form1Submit(), чтобы позволить действию отправки формы по умолчанию, выполнить свою работу, или , чтобы добавить еще $.post() в else, который отправляетданные в форму асинхронно, если вы намеревались сделать это с помощью аксиальных полномочий.

...