Вкладки jQuery отключены после отправки формы - PullRequest
0 голосов
/ 21 августа 2011

У меня есть форма в div вкладки jQuery, которая загружается с AJAX:

<div id="tabs-2">
    <form id="frmLogin" name="frmLogin" class="cmxform" method="post" action="actions/login.php">
        <p>
            <label>Username</label>
            <input type="text" id="username" name="username" maxlength="30" />
        </p>
        <div class="clear"></div>
        <p>
            <label>Password</label>
            <input type="password" id="password" name="password" maxlength="40" />
        </p>
        <p>
        <input class="submit" type="submit" id="submit" value="Login" />
        </p>
        <div class="clear"></div>
    </form>

</div>

Форма отправляется в указанный файл PHP. Этот .js файл с использованием плагинов jQuery формы и проверки отправляет форму через AJAX. PHP-файл возвращает данные JSON:

$(document).ready(function() { 
$("#frmLogin").validate({
                    rules: {
                            username: {
                                required: true,
                                minlength: 6
                            },
                            password: {
                            required: true,
                            minlength: 6
                            },
                            },
                            submitHandler: function(form) {
                                $("#frmLogin").ajaxSubmit({
                                                        dataType: 'json',
                                                        success:    processLogin,
                                                        })
                            }
});
function processLogin(data) {
    if (data.un) {
        $("div#tabs-2").slideUp(function() {
            $("li#login").html('<a href="ajax/loggedin.html">Welcome, '+data.fn+'</a>');
        });
    } else {
        alert("uh-oh"); 
    }
}
});

Это все отлично работает. У меня есть ссылка, которая ранее гласила «Войти», чтобы прочитать приветственное сообщение. Теперь я хочу заменить содержимое этой вкладки (форму входа) на ul пользовательских опций.

Проблема: ссылка с приветственным сообщением больше не работает как вкладка. При нажатии он направляет браузер к «ajax / loggedin.html.»

Я попытался перезапустить функцию tabs в файле "loggedin.html" и вызвать ее в функции processLogin в "login.js". Моя следующая попытка исправления будет состоять в том, чтобы изменить html-содержимое div-объекта tabs-2 в функции processLogin, но похоже, что это сгенерирует много неуклюжего кода.

Какие-либо предложения по предотвращению отключения поведения вкладки?

1 Ответ

0 голосов
/ 21 августа 2011

Это классическая проблема, когда код запускается. Вы настраиваете поведение вкладок для проверки вкладок и их настройки. Затем вы загружаете новый код, но не инициализировали вкладку для них.

Решения состоят в том, чтобы использовать делегат (или живой) вместо событий прямого щелчка или для инициализации вкладок в обратном вызове ajax. Последнее является лучшим решением для этой проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...