jQuery,按键事件未触发
jQuery, keyup event not firing
我在重构系统中的 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("");
}
});
当它是那样的时候,它完美地工作,但是当我把它改成这样时:
$('#quotation_search_client').on('keyup',QuotationServices.searchClient({social_reason: $('#quotation_search_client').val()}));
并像这样定义函数“searchClient”:
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_reason
带有一个空字符串,但是正如我所说,当我输入内容时,什么也没有发生。我不知道我遗漏了什么,我所做的只是 copy/paste 事件代码进入 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("");
}
};
我在重构系统中的 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("");
}
});
当它是那样的时候,它完美地工作,但是当我把它改成这样时:
$('#quotation_search_client').on('keyup',QuotationServices.searchClient({social_reason: $('#quotation_search_client').val()}));
并像这样定义函数“searchClient”:
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_reason
带有一个空字符串,但是正如我所说,当我输入内容时,什么也没有发生。我不知道我遗漏了什么,我所做的只是 copy/paste 事件代码进入 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("");
}
};