Javascript jQuery,keyup事件未触发

Javascript jQuery,keyup事件未触发,javascript,jquery,jquery-events,keyup,onkeyup,Javascript,Jquery,Jquery Events,Keyup,Onkeyup,我在重构系统中的keyup事件时遇到问题,该事件最初看起来如下: $('#quotation_search_client').on('keyup',function(){ param=$('#quotation_search_client').val(); if(param.length>=4){ var params = { social_reason: $('#quotation_search_client').val()

我在重构系统中的
keyup
事件时遇到问题,该事件最初看起来如下:

$('#quotation_search_client').on('keyup',function(){
    param=$('#quotation_search_client').val();
    if(param.length>=4){
        var params = {
            social_reason: $('#quotation_search_client').val()
        }
        var clients=ClientServices.getByFilter(params);
        var addresses=ClientServices.getAddresses(clients.clients);
        QuotationServices.fillClients(clients.clients, addresses);      
    }else{
        $('#customers_results').html("");
    }
});
    QuotationServices.searchClient = function(params){
        param=$('#quotation_search_client').val();
        if(param.length>=4){
            var clients=ClientServices.getByFilter(params);
            var addresses=ClientServices.getAddresses(clients.clients);
            QuotationServices.fillClients(clients.clients, addresses);      
        }else{
            $('#customers_results').html("");
        }
    };
当它是那样的时候,它工作得很完美,但是当我把它改成这样:

$('#quotation_search_client').on('keyup',QuotationServices.searchClient({social_reason: $('#quotation_search_client').val()}));
并定义函数“searchClient”,如下所示:

$('#quotation_search_client').on('keyup',function(){
    param=$('#quotation_search_client').val();
    if(param.length>=4){
        var params = {
            social_reason: $('#quotation_search_client').val()
        }
        var clients=ClientServices.getByFilter(params);
        var addresses=ClientServices.getAddresses(clients.clients);
        QuotationServices.fillClients(clients.clients, addresses);      
    }else{
        $('#customers_results').html("");
    }
});
    QuotationServices.searchClient = function(params){
        param=$('#quotation_search_client').val();
        if(param.length>=4){
            var clients=ClientServices.getByFilter(params);
            var addresses=ClientServices.getAddresses(clients.clients);
            QuotationServices.fillClients(clients.clients, addresses);      
        }else{
            $('#customers_results').html("");
        }
    };

它停止工作了,当我输入东西时什么也没发生。控制台没有显示任何错误,因此我在
searchClient
函数的开头编写了一个console.log,显然当我的页面加载时它会触发,显示
params.social\u reason
带有一个空字符串,但是当我键入某个内容时,正如我所说的,什么也没有发生。我不知道我遗漏了什么,我所做的只是将事件的代码复制/粘贴到
searchClient
函数中,并删除var
params
(因为我会将其作为参数接收),有什么帮助吗?

您在声明keyup事件后立即执行该函数,因此您不会将该函数传递给keyup事件

你应该改为:

$('#quotation_search_client').on('keyup',QuotationServices.searchClient);
和变化:

QuotationServices.searchClient = function(){
    var params = {social_reason: $('#quotation_search_client').val()}
    var param = $('#quotation_search_client').val();
    if(param.length>=4){
        var clients=ClientServices.getByFilter(params);
        var addresses=ClientServices.getAddresses(clients.clients);
        QuotationServices.fillClients(clients.clients, addresses);      
    }else{
        $('#customers_results').html("");
    }
};

相同的答案不同的问题。我考虑过使用或任何其他无数相关问题,但它们大多与
setTimeout
相关。最后,是相同的基本问题。有趣的是,问题是我不希望参数出现在代码块中,因为我想将相同的功能添加到另一个元素中,但使用不同的参数值,但这确实回答了我的问题,所以谢谢!我想我得用另一种方法。