2014-12-01 2 views
0

JS сценария:JQuery UI Autcomplete Проверить количество результатов

<script> 
/* This function is used for multiple autocomplete input values */ 
$(function() { 

    var oldID = jQuery("#old_project_manager_id").val(); 
    if (oldID != null) { 
     jQuery("#project_manager_id").val(oldID); 
    } 

    function split(val) { 
     return val.split(/,\s*/); 
    } 

    function extractLast(term) { 
     return split(term).pop(); 
    } 
    $("#project_manager") 
    // don't navigate away from the field on tab when selecting an item 
    .bind("keydown", function (event) { 
     if (event.keyCode === $.ui.keyCode.TAB && $(this).autocomplete("instance").menu.active) { 
      event.preventDefault(); 
     } 
    }) 
     .autocomplete({ 
     source: function (request, response) { 
      $.getJSON("<?php echo SITE_URL.'project/pmlist'?>", { 
       term: extractLast(request.term) 
      }, response); 
     }, 
     search: function() { 
      // custom minLength 
      var term = extractLast(this.value); 
     }, 
     focus: function() { 
      // prevent value inserted on focus 
      return false; 
     }, 
     select: function (event, ui) { 
      var terms = split(this.value); 
     } 
    }) 
} 
</script> 

А также это:

$(function() { 

    var oldID = jQuery("#old_user_id").val(); 
    if (oldID != null) { 
     jQuery("#user_id").val(oldID); 
    } 

    function split(val) { 
     return val.split(/,\s*/); 
    } 

    function extractLast(term) { 
     return split(term).pop(); 
    } 
    $("#user") 
    // don't navigate away from the field on tab when selecting an item 
    .bind("keydown", function (event) { 
     if (event.keyCode === $.ui.keyCode.TAB && $(this).autocomplete("instance").menu.active) { 
      event.preventDefault(); 
     } 
    }) 
     .autocomplete({ 
     source: function (request, response) { 
      $.getJSON("<?php echo SITE_URL.'somecontroller/someaction'?>", { 
       term: extractLast(request.term) 
      }, response); 
     }, 
     search: function() { 
      // custom minLength 
      var term = extractLast(this.value); 
     }, 
     focus: function() { 
      // prevent value inserted on focus 
      return false; 
     }, 
     select: function (event, ui) { 
      var terms = split(this.value); 

      // remove the current input 
      terms.pop(); 

      // add the selected item 
      terms.push(ui.item.value); 
      this.value = terms.join(", "); 

      jQuery("#user_id").val(ui.item.emp_id); 

      return false; 
     } 
    }); 
}); 

Я попытался с .length() на искали срок, но его не извлечение правильного результата.

Когда пользователь вводит что-то, на нем будет отображаться список зарегистрированных пользователей. Как я могу показать сообщение No Result Found на основе количества выбранных записей. Если нет действительных пользователей, он покажет сообщение, иначе он отобразит список пользователей.

Спасибо.

+0

Посмотрите на это: http://api.jqueryui.com/autocomplete/#event -response , а затем добавить/изменить ответное событие в вашем коде. – stackErr

+1

Проверить здесь 'http: // stackoverflow.com/ questions/4718968/detecting-no-results-on-jquery-ui-autocomplete' – Gowri

+0

@Gowri, я получаю эту ошибку' TypeError: ui.content имеет значение null: if (ui.content.length == 0) '. – Slimshadddyyy

ответ

0

Я хотел бы добавить что-то вроде этого:

$("#user") 
    // don't navigate away from the field on tab when selecting an item 
    .bind("keydown", function (event) { 
     if (event.keyCode === $.ui.keyCode.TAB && $(this).autocomplete("instance").menu.active) { 
      event.preventDefault(); 
     } 
    }) 
     .autocomplete({ 
     //Your code here 
      response: function(event, ui) { 
       if(ui.content.length == 0) 
       { 
        //do what you want if no results returned 
       } 
      } 
    }); 

Чтение документации для JQuery UI помогает: http://api.jqueryui.com/autocomplete/#event-response

+0

Он говорит 'TypeError: ui.content имеет значение null: if (ui.content.length == 0)'. Также как я могу связать «нет результата найдено» в раскрывающемся списке поиска? – Slimshadddyyy

+0

@Slimshadddyyy Вот скрипка, работающая с вашим примером: http://jsfiddle.net/sphn33ww/ Попробуйте и отлаживайте ответное событие. Посмотрите, что означает 'ui.content' для разных ответов, а затем заставляют вашу функцию реагировать на это. – stackErr

+0

Я пробовал с 'if (ui.content.length === 0 || ui.content == null) {', но он все еще показывает мне, что 'TypeError: ui.content is null'. – Slimshadddyyy

Смежные вопросы