2017-01-12 1 views
0

Пользователи вводят значения, такие каки 12345. Я хотел бы проигнорировать 0, когда пользователи входят.jQuery Autocomplete ignore 0

<input name="location" class="input-lg" style="width:100%;" id="location" type="text" size="50" placeholder="<?php echo $this->lang->line('inputhint');?>" /> 

$(function() { 
    var availableLocations = 
    <?php 
     // print the json array containing all zips 
     echo $locations; 
    ?> 

    $("#location").autocomplete({ 
     source: availableLocations, 
     minLength: 3, 
     focus: function (event, ui){ 
      $('#location').val(ui.item.value); 
      return false; 
     }, 
     select: function (event, ui){ 
      $('#location').val(ui.item.value); // display the selected text 
      $('#locationid').val(ui.item.key); // save selected id to hidden input 
      return false; 

     }, 
     change: function (event, ui){ 
      // write value to hidden field 
      $("#locationid").val(ui.item? ui.item.key : 0); 
      return false; 
     } 
    }); 
}); 

Есть ли способ сделать это? Я много пробовал, но я не могу справиться с этим. Есть идеи?

+0

Да, вы можете использовать функцию источника, request.term содержит строку поиска. –

+0

Спасибо Axel. Как мне это сделать. source: function (event, ui) {var zip = parseInt (ui.item.value); ...} – yab86

ответ

0

Следующая не тестировался, но это что-то работает так:

$("#location").autocomplete({ 
    source: function(request, response) { 
     // manipulate your search term 
     var yourTerm = parseInt(request.term); 
     // run a filter function on your data... 
     var filteredArray = $.map(availableLocations, function(item) { 
      // or whatever your matching rule is.... 
      if(item.startsWith(yourTerm)){ 
       return item; 
      } else{ 
       return null; 
      } 
     }); 
     // return the filtered values 
     response(filteredArray); 
    } 
});