我正在尝试将jQuery UI自动完成同时应用于三个输入框,因为请求和逻辑几乎相同,只有一个参数在它们之间发生变化。
由于我使用的是使用ajax检索的远程源,因此我试图了解请求的文本框。
正如您在'source'事件的'switch'语句中所看到的,我尝试了$(this).attr(“id”)但这不起作用,它返回'indefined'
我试过这个,因为它处理'select'和'focus'事件,但不是'source'。我猜我正在使用它的方式我指的是'源'
有没有人知道如何知道在这种情况下调用的事件是哪个元素?
谢谢!
$("#campo-categorias, #campo-tipos, #campo-colonias").autocomplete({
minLength: 1,
delay: 100,
source: function(request, response){
var solicitud = new Object;
switch ($(this).attr("id")){
case "campo-categorias":
solicitud.action = 'get_categorias';
break;
case "campo-tipos":
solicitud.action = 'get_tipos_comida';
break;
case "campo-colonias":
solicitud.action = 'get_colonias';
break;
}
solicitud.consulta = request.term;
$.ajax({
url: "wp-admin/admin-ajax.php",
dataType: "json",
data: solicitud,
type: "POST",
success: function(data){
response(data);
}
});
});
答案 0 :(得分:5)
我认为您在switch语句中寻找this.element.attr("id")
。这应该有助于找到正确的身份。
此外,您的代码缺少大括号,它应如下所示:
$("#campo-categorias, #campo-tipos, #campo-colonias").autocomplete({
minLength: 1,
delay: 100,
source: function(request, response){
var solicitud = new Object;
switch (this.element.attr("id")){
case "campo-categorias":
solicitud.action = 'get_categorias';
break;
case "campo-tipos":
solicitud.action = 'get_tipos_comida';
break;
case "campo-colonias":
solicitud.action = 'get_colonias';
break;
}
solicitud.consulta = request.term;
$.ajax({
url: "wp-admin/admin-ajax.php",
dataType: "json",
data: solicitud,
type: "POST",
success: function(data){
response(data);
}
});
}
});