jQuery live () + focus () - автозаполнение интерфейса - PullRequest
1 голос
/ 25 ноября 2011

Просто нужна небольшая помощь с jquery - я пытаюсь изменить параметр поиска "w", передаваемый php json на лету:

<script type="text/javascript">
        $(function(){
          $('.auto').live('keydown.autocomplete', function(){
             $('.auto').focus(function() {
                var col = $(".auto").closest("td").attr("col");
                var srs = "search_tip.php?w="+col;
            });

            $(this).autocomplete({
                source: srs,
                dataType: "json",
                minLength: 2
            });
          });
        });
    </script>

В основном, в зависимости от атрибута «col» родительского скрипта, поиск выполняет поиск в разных таблицах в базе данных. вот HTML-бит:

<tr primary_key="1">
<td col="catalogue" class="editableCell" style="width: 80px; "><input class="editableInput auto" type="text"></td>
<td col="artist" class="editableCell" style="width: 100px; "><input class="editableInput auto" type="text"></td>
<td col="title" class="editableCell" style="width: 206px; "><input class="editableInput auto" type="text"></td>
</tr>

Без $('.auto').focus(function() {}); - js подхватывает только первый экземпляр (в данном случае «каталог»), но мне нужно его подбирать для каждого экземпляра .auto, меняя имя таблицы. Но с focus () - он вообще не работает =)

дайте мне знать, если это достаточно ясно, или вам нужна дополнительная информация

спасибо!

Ответы [ 2 ]

0 голосов
/ 25 ноября 2011

Почему бы не сохранить значение в скрытом вводе, а затем использовать его при автозаполнении. Примерно так:

<script type="text/javascript">
            $(function(){
              $('.auto').live('keydown.autocomplete', function(){
                 $('.auto').focus(function() {
                    var col = $(".auto").closest("td").attr("col");
                    $('#hidden_col').val(col);
                });

                $(this).autocomplete({
                    source: "search_tip.php?w="+$('#hidden_col').val(),
                    dataType: "json",
                    minLength: 2
                });
              });
            });
        </script>

В html добавить скрытый ввод:

<input type="hidden" id="hidden_col" />
0 голосов
/ 25 ноября 2011

Я бы попробовал следующее:

  <script type="text/javascript">
  $(function(){
    $('.auto').live('keydown.autocomplete', function(){
      var col = $(this).closest("td").attr("col");
      var srs = "search_tip.php?w=" + col;
      $(this).autocomplete({
          source: srs,
          dataType: "json",
          minLength: 2
      });
    });
  });

...