помогите с капчей, пожалуйста...
Ребят, не могу сделать проверку капчи.. точнее я ее делаю, а форму отправить не могу.. вот код:
$(".data").submit(function(e){
var result = false;
$.post("ajax.php",{q : "captch"},function(data){
var captch = $("#captch").val();
if (captch != data){
alert("Капча введена неверно!");
} else { // отправка формы
return true;
}
});
return result;
});
В любом случае форма не отправляется из-за асинхронности .post запроса... Если внутри post писать return - не работает, а если снаружи - отработает быстрее, чем придет ответ... Что делать? |
послать синхронный запрос вам следует.
|
А я бы посоветовал проверять капчу сразу на сервере.
А то это странный какой-то Тьюринг-тест, клиенту приходит правильный ответ. — Пароль? — Эээ, qwerty— Нет, пароль не qwerty, а 12345! Пароль?— 12345!— Проходи! |
var isChecked = false;
$(".data").submit(function(e){
if (isChecked ) return true;
$.post("ajax.php",{q : "captch"},function(data){
var captch = $("#captch").val();
if (captch != data){
alert("Капча введена неверно!");
} else {
isChecked = true;
$(".data").submit();
}
});
return false;
});
Плюс проверяй равенство капчи на сервере, а возвращай результат сравнения. |
micscr,
что-то мне кажется, что форма сработает по второму клику.. запрос ведь асинхронный... Gvozd, Это делается только через .ajax? |
Цитата:
А вот то что надо не дать кликать пока предыдущий клик обрабатывается - это да, чтобы не множились проверки. Тут по разному можно или флагом, что обработка или кнопку сабмита скрыть. |
ну isChecked изменяется только в самом обработчике... т.е. он станет true после того, как мы нажмем... т.к. проверка этого условия стоит вначале, то ничего не произойдет в первый раз.. Ну мне так кажется
|
Цитата:
Цитата:
|
Цитата:
а вообще-то любой jQuery метод реализующий AJAX_фичи, можно настроить глобально |
| Часовой пояс GMT +3, время: 10:30. |