Загрузка нового содержимого в и сохранение значений полей ввода из предыдущего состояния ?

#ajax #jquery #input #tumblr

#ajax #jquery #ввод #tumblr

Вопрос:

Я пытаюсь создать свой собственный поиск в tumblr (только по тегам), поскольку их собственная функция поиска фактически не работает.

Итак, я почти на месте. Это работает, но мне нужно, чтобы поле поиска сохраняло значение того, что искал пользователь.

Итак, если я ищу «foobar», он загружает tumblr.com/tagged/foobar прямо в мой tumblr.com , но поле поиска по-прежнему содержит термин «foobar».

Вот мой рабочий код, за исключением кода, в котором я пытаюсь вставить предыдущий поисковый запрос во вновь загруженный

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

 <html>

     <head>
          <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
          <script type="text/javascript">
               jQuery(function($) {
                    $('#syndex').keydown(function(event) {
                        if (event.keyCode == '13') {
                           var syndex = $('input:text').val();
                           $('body').load("http://syndex.me/tagged/"  syndex);
                           $(this).val(syndex); //this is what's not working
                        }       
                    });
                });
          </script>
      </head>

    <body>
         <div id="logo">
              <input id="syndex" type="text"/>
         </div>
    </body>

</html>
  

Ответ №1:

Вам нужно поместить это в complete функцию, которая может быть передана в качестве параметра load .

http://api.jquery.com/load/

Load выполняет асинхронный вызов AJAX. Вы пытаетесь установить значение до загрузки содержимого.

 $('body').load("http://syndex.me/tagged/"  syndex,function(){
    $('input:text').val(syndex);
});
  

Комментарии:

1. Я бы также предложил использовать более точный селектор, чем input:text , возможно id , (который, я думаю, есть #syndex ?). Однако это не имеет отношения к актуальному вопросу.

2. Вот почему I <3 S.O. Это тоже имеет смысл. Спасибо за объяснение! Это сработало.