Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.11.2010, 14:53
Новичок на форуме
Отправить личное сообщение для dmsuslov Посмотреть профиль Найти все сообщения от dmsuslov
 
Регистрация: 28.10.2007
Сообщений: 8

Валидация формы
Есть задача: при сабмите формы прежде сделать валидацию ее полей, и если все в порядке - выполнить сабмит.
Для этого я вешаю обработчик на форму. Валидацию провожу с помощью AJAX-запроса к серверу. Результат проверки ловлю в колбек-функции запроса:

// обработчик формы
$('#my_form').submit(function () {
// тут AJAX'ом проверяю поля:
$.post('script.php', {f1: $('#field1').val(), f2: $('#field2').val()}, function (result) {
// вот тут я вижу результат проверки
})
});

Но если результат проверки отрицательный, то false должна вернуть функция-обработчик формы. Т.е. как мне из колбека ajax-вызова "выбраться" в обработчик формы?
Кстати, вызов асинхронный, что усложняет дело...
Ответить с цитированием
  #2 (permalink)  
Старый 05.11.2010, 15:04
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

$('#my_form').submit(function () {
// тут AJAX'ом проверяю поля:
$.post('script.php', {f1: $('#field1').val(), f2: $('#field2').val()}, function (result) {
// вот тут я вижу результат проверки
if (все OK) {
  // делай сабмит
  $('#my_form').submit();
}
})
return false; // чтобы сабмит не происходил, т.к. тут ответа никогда не будет.
});
Ответить с цитированием
  #3 (permalink)  
Старый 05.11.2010, 15:08
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

<style>
.invalidate {color:red;}
.validate {color: green;}
</style>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<p>Введите корректные данные</p>
<form action="#">
      <input type="text" />
      <input type="submit" />
</form>
<div></div>
<script>
$("form").submit(function() {
    if (/\d+/.test($("input:first").val())) {
        $("div").text("Правильно...").addClass('validate').show();
        return true;
   }
   $("div").text("Неправильно!").removeClass('validate').addClass('invalidate').show().fadeOut(1000);
      return false;
   });
</script>
Ответить с цитированием
  #4 (permalink)  
Старый 05.11.2010, 15:14
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

в моем примере еще может флажок выставлять, что форма уже проверена, чтобы бесконечно не гоняло.
Ответить с цитированием
  #5 (permalink)  
Старый 05.11.2010, 16:12
Новичок на форуме
Отправить личное сообщение для dmsuslov Посмотреть профиль Найти все сообщения от dmsuslov
 
Регистрация: 28.10.2007
Сообщений: 8

Гран мерси! Простое и изящное решение. Наверное, я заработался, поэтому и не увидел его сам, а стал решать задачу "в лоб" :-)
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оцените реализацию скрипта валидации данных формы pandasensey Ваши сайты и скрипты 0 05.07.2010 18:11
Простая проверка формы. Добавить "динамики". Jurasmi Элементы интерфейса 3 07.04.2010 16:48
валидация формы (продолжение) vovasvv Общие вопросы Javascript 4 30.03.2010 12:51
TinyMCE валидация формы Петр Библиотеки/Тулкиты/Фреймворки 1 09.12.2009 18:01
load + php подгрузка формы Karandash jQuery 4 01.12.2009 13:04