Показать сообщение отдельно
  #1 (permalink)  
Старый 09.05.2011, 17:45
Новичок на форуме
Отправить личное сообщение для Nycs Посмотреть профиль Найти все сообщения от Nycs
 
Регистрация: 26.10.2008
Сообщений: 5

Возврат функции значения из getJSON
Добрый день. Столкнулся со следующей проблемой:

Есть функция
function emailCheck(value) {
    if (check_email_address(value)) { //проверка по регулярным выр-ям
        $.getJSON("/ajax/check_email.php",{'email':value},function(json){
            if (json.success) {
                if ($("span.email").hasClass('bad')) {
                    $("span.email").removeClass('bad');
                }
                $("span.email").addClass('good');
                return true;  // это и надо вернуть. Пункт 1
            }
            else {
                if ($("span.email").hasClass('good')) {
                    $("span.email").removeClass('good');
                }
                $("span.email").addClass('bad');
                return false;  // или это. Пункт 2
            }
        });
    }
    else {
        if ($("span.email").hasClass('good')) {
            $("span.email").removeClass('good');
        }
        $("span.email").addClass('bad');
        return false;
    }
}


В коментариях в коде я пометил пункт 1 и 2, эти значения должна возвращать функция emailCheck(). Но дело в том что отправка\прием json это внутренняя функция и пункт 1 и 2 возвращают значение из этой внутренней функции. Пробовал писать return непосредственно перед $.getJSON()... - тоже без результатно...

Для передачи общей картины скажу что дальше в коде есть ивент на сабмит формы, и в теле этого сабмита есть строка
if (!emailCheck($("input.input1[name=email]").val())) { return false; }

То есть если emailCheck() возвращает false то прерывается отправка формы.

UPD. Если ничего не получится то планирую завести просто глобальную переменную которую менять с помощью этой функции и далее проверять уже значение самой переменной.. но у меня три подобных независимых проверки, хотелось бы поэлегантнее...

Последний раз редактировалось Nycs, 09.05.2011 в 17:47.
Ответить с цитированием