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();
})
Ответы
Ответ 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();
})