Форма с поддержкой AJAX будет отправлена ​​только один раз с использованием AJAX, затем по умолчанию будет HTTP-запрос - PullRequest
2 голосов
/ 04 января 2011

Форма с поддержкой AJAX отправляется только один раз с использованием AJAX, затем по умолчанию используется стандартный HTTP-запрос.Код ниже:

    $('#urlContainer form').submit(function(){

        var p = {};
        p['url'] = $('input#url').val();

        if($('#urlContainer #results').length != 0){
            $('#urlContainer #results').fadeOut(1000, function() {
                $('#urlContainer').load(location.href+' #urlContainer>*',p,function(){
                    $('#urlContainer #results').hide();
                    $('#urlContainer #results').fadeIn(1000);

                });
            });
        } else {
            $('#urlContainer').load(location.href+' #urlContainer>*',p,function(){
                $('#urlContainer #results').hide();
                $('#urlContainer #results').fadeIn(1000);

            });
    }
    return false;
});

Есть идеи?

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 04 января 2011
$('#urlContainer').load(...)

Этот код заменяет весь контент в #urlContainer.Все элементы заменены, что означает, что все связанные с ними обработчики событий также будут заменены.Вы должны использовать delegate() для запуска кода для событий на элементах, которые могут еще не существовать:

$('#urlContainer').delegate('form', 'submit', function(){
    // the code from your submit handler
});

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

2 голосов
/ 04 января 2011

Функция jQuery load заменяет содержимое соответствующих элементов на результат вызова AJAX. Когда это происходит, форма, к которой вы привязываетесь, удаляется (или заменяется), поэтому исходный обработчик событий не запускается.

Если вы используете .live('submit' ...) вместо .submit, это должно решить вашу проблему:

$('#urlContainer form').live('submit', function(){
    ...
});

Метод live присоединяет к текущим и будущим элементам, которые соответствуют селектору.

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