помогите с капчей, пожалуйста...
Ребят, не могу сделать проверку капчи.. точнее я ее делаю, а форму отправить не могу.. вот код:
$(".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, время: 04:27. |