0

У меня есть следующая функция, которую я хочу получать каждый раз, пользователь вводит что-то в поле ввода typeahead.Вызов функции каждый раз для пользовательских типов

function getAllActiveUsers() { 
    var userList = $('#usersTable').jqGrid('getGridParam').userData; 
    var userNames = {}; 
    if(userList) { 
     // Return the list of all active users 
     $(userList).each(function() { 
      if(this.userStatus != 1) { 
       // If the user is verified 
       // Could be active/inactive 
       userNames.user = this.username; 
      } 
     }); 
    } 
    return JSON.stringify(userNames); 
} 

HTML:

<div id="the-basics"> 
    <input class="typeahead" type="text" data-provide="typeahead" placeholder="User List"> 
</div> 

Я просматривал, в examples, но не понимают, как реализовать эту функциональность.

Edit:

Почему это не работает, когда я инициализации, как:

$('.typeahead').typeahead({ 
    source : getAllActiveUsers 
}); 
+0

вызов функции на '$ ('машинописный '). На (' KeyUp', getAllActiveUsers())' попробовать этот – guradio

+0

Каких машинописный вы используете? Вы имеете в виду typehead.js, но что-то говорит мне, что вы используете другое? – davidkonrad

+0

Что возвращает 'getAllActiveUsers'? – whipdancer

ответ

1

Вы можете использовать функцию .keyup Jquery

$(".typeahead").keyup(function() { 
    getAllActiveUsers(); 
}); 
+1

Зачем использовать анонимную функцию? Это избыточность. – asprin

+0

Вы правы. Анонимная функция может быть просто заменена функцией, которая должна быть выполнена. Но читать легче. –

+0

Это не работает. Я пытаюсь использовать 'twitter's' typeahead. –

1

Попробуйте

$(document).ready(function(){ 
    $('.typeahead').keyup(function(){ 
     getAllActiveUsers(); 
    }); 
}); 
+1

Зачем использовать анонимную функцию? Это избыточность. – asprin

0

Взято из ссылки вы дали вы можете указать класс .typeahead внутри ид #the-basics:

$(document).ready(function(){ 
    $('#the-basics .typeahead').typeahead({ 
    //code here; 
    } 
} 

Поскольку страница не может манипулировать безопасно, пока документ не будет готов, вы должны использовать $(document).ready.
Кроме того, попробуйте использовать консоль своего браузера и проверьте, можете ли вы достичь $('#the-basics .typeahead')

0

Вы можете использовать JQuery Keyup, который запускается при отпускании ключа.

$(".typeahead").on('keyup',function() { 
    getAllActiveUsers(); 
}); 
0

если ваш текстовый блок идет динамически, то вы должны попробовать

$(document).on("keyup", ".typeahead" , function() { 
    getAllActiveUsers(); 
}); 

попробовать это и дайте нам знать, если его работы или нет.

0

Должна быть обеспечена возможность

var getAllActiveUsers = function(q, cb, cb2) { 
    // cb for sync, cb2 for async 
    var userList = $('#usersTable').jqGrid('getGridParam').userData; 
    var filterted = /* whatever you want to do with q */; 
    cb(filtered); 
}; 

$('.typeahead').typeahead({ 
    /* Options */ 
}, 
{ 
    source : getAllActiveUsers 
});