Подтвердить что ты не робот

JQuery form submit

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

  • выполняется проверка в форме: 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();
})
4b9b3361

Ответ 1

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

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

Затем в вашем обратном вызове post сделайте следующее:

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

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

Ответ 2

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

Ответ 3

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

Ответ 4

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();
})