每次用户输入时调用一个函数

时间:2016-05-04 09:48:12

标签: javascript jquery typeahead.js typeahead bootstrap-typeahead

我有以下功能,我想每次都调用,用户在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,但不了解如何实现此功能。

修改

当我初始化为:

时,为什么它不起作用
$('.typeahead').typeahead({
    source : getAllActiveUsers
});

6 个答案:

答案 0 :(得分:1)

您可以使用.keyup jquery函数

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

答案 1 :(得分:1)

试试这个

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

答案 2 :(得分:0)

从您提供的参考文献中,您可以在ID .typeahead中指定班级#the-basics

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

由于在文档准备就绪之前无法安全操作页面,因此您应该使用$(document).ready
另外,尝试使用浏览器控制台并检查是否可以访问$('#the-basics .typeahead')

答案 3 :(得分:0)

您可以使用在释放密钥时触发的Jquery Keyup。

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

答案 4 :(得分:0)

如果您的文本框动态出现,那么您应该尝试

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

尝试这个,让我们知道它是否有效。

答案 5 :(得分: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
});