Автозаполнение + скрытое поле в jquery? - PullRequest
3 голосов
/ 30 июля 2009

Я пытаюсь выполнить автозаполнение, которое отобразит что-то, а затем поместит что-то еще в скрытое поле при выборе.

Пример:

В моей базе данных у меня есть {[1, 'john'], [2, 'bob'], [3, 'john']}

Если пользователь наберет «jo» и нажмет первую «john», у меня нет возможности узнать, по какой записи он нажал. Поэтому мне нужно какое-то связанное скрытое поле, чтобы справиться с этим.

Есть ли плагин jquery, который это делает, или я должен создать свой собственный?

Я уже начал, и он отлично работает с локальными значениями, но если мне нужно получить их асинхронно, это пока не работает. Я опираюсь на этот плагин от bassistance . Думаю, я мог бы взять в руки код и изменить способ обработки ответов, но это сэкономило бы мне время, если что-то уже было сделано!

Ответы [ 4 ]

3 голосов
/ 30 июля 2009

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

2 голосов
/ 16 января 2010

Я знаю, что это старое, но вот что я делаю, чтобы скрытое поле заполнялось уникальным идентификатором, который никогда не отображался, и предоставлял пользователю поле автозаполнения, основанное на отображаемых значениях:

<script type="text/javascript">
var picklist = [
    { id: "1", value: "One" }, 
    { id: "2", value: "Two" }, 
    { id: "3", value: "Three" }, 
    { id: "4", value: "Four" }
    ];

$().ready(function() {
 $("#pickValue").autocomplete(picklist, {
  minChars: 0,
  max: 12,
  autoFill: true,
  mustMatch: true,
  matchContains: false,
  scrollHeight: 220,
  formatItem: function(row, i, total) {
   return row.value;
  }, 
  formatResult: function(row) {
   return row.value;
  }
 });
 $('input#pickValue').result(function(event, data, formatted) {
  $('#pickID').val( !data ? '' : data.id);
 });
});
</script>
1 голос
/ 07 марта 2011

Возможно, это поможет Хитрость заключается в том, чтобы возвращать false после события select. Это закроет выпадающий список, и ваши изменения в скрытом / текстовом поле останутся видимыми.

 <script type="text/javascript">
      $(document).ready(function(){
        $("#user_autocomplete").autocomplete({
          source: "http://localhost:3000/admin/users/emails_autocomplete",
          minLength: 3,
          delay: 1,
          select: function( event, ui ) {
            if (ui.item) {
              console.log("Selected: " + ui.item.value + " aka " + ui.item.label);
              $("#user_autocomplete").val(ui.item.label);
              $('#search_user_id_equals').val(ui.item.value);
            } else {
              // "Nothing selected, input was " + this.value );
            }
            return false;
          }
        });
      });

...........

<input class="hidden" id="search_user_id_equals" name="search[user_id_equals]" type="hidden" />

<div class="input select optional">
  <label for="user_autocomplete">User email</label>
  <input id="user_autocomplete" type="text" index="" class="ui-autocomplete-input string"
         autocomplete="off" role="textbox"
         aria-autocomplete="list" aria-haspopup="true"
         value=""
         />
</div>
1 голос
/ 30 июля 2009

После длительного поиска единственное автозаполнение, которое я обнаружил, ведет себя так, как вы описали: Facelist

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