Выбор и проверка вкладок JQueryUI - PullRequest
0 голосов
/ 24 сентября 2010

Я пытаюсь проверить содержимое вкладки (используя проверку ajax) перед переходом на следующую вкладку. Поэтому, когда пользователь нажимает на вкладку, содержимое текущей вкладки отправляется на сервер для проверки. И когда получен результат с сервера, я переключаюсь на следующую вкладку. Вот некоторый код:

$('#tabs').tabs({
    select: function(event, ui) {
        ...
        validate(currentIndex, nextIndex);
        return false;
    }
});

function validate(currentIndex, nextIndex){
    $.ajax({
        ...
        complete: function(){
            $("#tabs").tabs('select', nextIndex);
        }
        ...
    }
}

Вы, вероятно, уже видите проблему, это бесконечный цикл, потому что валидация вызывает обработчик выбора вкладки, который вызывает валидацию и так далее. Как бы я решить это без глобальных переменных?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 13 декабря 2010

Пожалуйста, посмотрите это - официальная документация по вкладкам Jquery

Ваша функция проверки не должна делать ничего, кроме возврата true или false.

$('#tabs').tabs(
{
    select: function(event, ui)
    {
        ...
        return validate(currentIndex, nextIndex);
    }
});

function validate(currentIndex, nextIndex)
{
    $.ajax(
    {
        ...
        success: function(data)
        {
            // example response: {"error": 0}
            if(!data.error) return true;
            else return false;
        }
        ...
    }
}

Когда вашtabs ('select' ... function возвращает false, вкладка не будет переключаться, если true, вкладка будет переключаться - поэтому вам не нужно делать это в функции проверки.

1 голос
/ 24 сентября 2010

Я не уверен, что это сработает (не пробовал ваш код), но вы не можете использовать .data (ключ, значение) , чтобы добавить что-то вроде "уже проверенного" флаг для проверки? Таким образом, вы добавляете оператор if, который проверяет это, прежде чем снова войти в функцию проверки.

...