Jquery ui jquery ui 1.9.0自动完成自动对焦不工作
前因:Jquery ui jquery ui 1.9.0自动完成自动对焦不工作,jquery-ui,jquery-ui-autocomplete,autofocus,Jquery Ui,Jquery Ui Autocomplete,Autofocus,前因: jquery-ui-1.9.0.custom.min.css jquery-1.8.2.js jquery-ui-1.9.0.custom.min.js 代码如下: $("#origen, #destino").autocomplete({ source: function(request, response){ $("#cargando").show(); // Para distinguir la cache del e
- jquery-ui-1.9.0.custom.min.css
- jquery-1.8.2.js
- jquery-ui-1.9.0.custom.min.js
$("#origen, #destino").autocomplete({
source: function(request, response){
$("#cargando").show();
// Para distinguir la cache del elemento origen y destino ya que van a jsp's diferentes. tolo (03/07/2012)
var term = request.term; var termCache = request.term + "-" + $(this.element).attr("id");
if ( termCache in cache ) {
response( cache[ termCache ] );
setTimeout("$('#cargando').hide();", 2000);//ocultamos con retraso 2 seg
return; }
if($(this.element).attr("id") == "origen"){
// El filtro de aeropuertos por pais es solo para el origen
if (parent.codMarca == 'NET')
paises = '|PT|ES|';
urlxx = "../../jsp/buscador/autocompletevuelos.jsp?sesion=" + sesion + "&term=" + term + "&codidi=" + codidi +
"&tipPro=VH&paises=" + codpai + "&codEmp=" + parent.codEmp + "&codMarca=" + parent.codMarca + "&codWcn=" +
parent.codWcn + "&orides=O"; }else{
urlxx = "../../jsp/buscador/autocompletepoblaciones.jsp?sesion=" + sesion +
"&term=" + term +
"&codidi=" + codidi +
"&tipoProducto=VH&codemp=" + codEmp +
"&codwcn=" + codWcn + "&codMarca=" + parent.codMarca; }
lastXhr = $.getJSON( urlxx, request, function( data, status, xhr ) {
cache[ termCache ] = data;
if ( xhr === lastXhr ) {
response( data );
setTimeout("$('#cargando').hide();", 2000);//ocultamos con retraso 2 seg
}
});
},
minLength: 2,
select: function(event, ui) {
var componente = $(this).attr("id");
if (ui.item) {
// El check de residente sólo tiene que estar habilitado cuando los dos aeropuertos son españoles, y al menos uno de ellos
// consta como residente.
if(componente == "origen"){
$("#oriCodApt").val(ui.item.id);
$("#orideszona").val(ui.item.value);
$("#oricodpai").val(ui.item.codpai.toUpperCase());
$("#oriresidente").val(ui.item.residente.toUpperCase());
}else{
$("#desCodApt").val(ui.item.codapt);
$("#desdeszona").val(ui.item.value);
$("#descodpai").val(ui.item.codpai.toUpperCase());
$("#desresidente").val(ui.item.residente.toUpperCase());
$("#zonaCodificada").val( ui.item.codpai.toUpperCase() + "#" +
ui.item.codepr.toUpperCase() + "#" +
ui.item.codpob.toUpperCase() + "#" +
ui.item.codare.toUpperCase());
$("#numAeropuertos").val(ui.item.numAeropuertos == undefined ? 0 : ui.item.numAeropuertos);
$("#fueraCiudad").val(ui.item.fueraCiudad == undefined ? "" : ui.item.fueraCiudad);
}
validaResidente();
}
},
open: function(e,ui) {
var autoData = $(this).data('autocomplete');
var reserText = ",de,del,el,la,las,los,en,";
var altoCombo = 200; // Altura del combo del autocomplete.
var componente = $(this).attr("id");
autoData.menu.element.css({'width':'' + anchoMinimo + 'px'});
autoData.menu.element.find('li').each(function() {
var fila = $(this);
var texto = fila.text().toLowerCase().replace(autoData.term.toLowerCase(), "<b>" + autoData.term.toLowerCase() + "</b>");
var autoText = "";
texto = texto.split(" ");
for(var i = 0; i < texto.length; i++){
if((reserText.indexOf( texto[i].replace("<b>","").replace("</b>","") ) != "-1") && (i > 0)){
autoText += texto[i] + " ";
}else if( texto[i].substring(0,3) == "<b>" ){
autoText += "<b>" + texto[i].charAt(3).toUpperCase() + texto[i].substring(4) + " ";
}else{
autoText += texto[i].charAt(0).toUpperCase() + texto[i].substring(1) + " ";
}
}
autoText = autoText.replace(" De "," de ").replace(" Del "," del ").replace(" Los "," los ").replace(" El "," el ").replace(" En "," en").replace(" La "," la ").replace(" Las "," las ");
// El código de aeropuerto, lo que va entre paréntesis, tiene que salir en mayúsculas.
if(componente == "origen"){
var tamPrimerCorte = autoText.split("(").length;
var textoEnParentesis = autoText.split("(")[tamPrimerCorte - 1];
textoEnParentesis = textoEnParentesis.split(")")[0];
autoText = autoText.replace("(" + textoEnParentesis + ")", "(" + textoEnParentesis.toUpperCase() + ")");
}
fila.find('a').text("");
fila.find('a').append( autoText );
// Ahora vamos a calcular el ancho de la cadena más ancha para saber qué ancho tiene que tener el combo.
ancho = autoText.length * 5; // Con esta fuente de letra, en IE, etc...
if(ancho > anchoFilaDestinos){
anchoFilaDestinos = ancho;
}
// Fin del cálculo del ancho.
fila.find('a').css({'white-space':'nowrap'});
});
// Hay que mantener un ancho mínimo.
if(anchoFilaDestinos < anchoMinimo){
anchoFilaDestinos = anchoMinimo;
}
numItems = 0;
// Hay que recorrer todas las filas otra vez, para ponerles a todas el mismo ancho.
autoData.menu.element.find('li').each(function() {
var fila = $(this);
fila.find('a').css({'white-space':'nowrap','width':'' + anchoFilaDestinos + 'px','text-align':'left'});
numItems++;
});
anchoFilaDestinos += 9;
autoData.menu.element.css({'width':'' + anchoFilaDestinos + 'px'});
anchoFilaDestinos = 0;
// Porque 9 son los que caben en 200 de alto.
if(numItems < 9){
altoCombo = numItems * 23;
$(".ui-autocomplete").css("height", altoCombo).css("overflow-y", "hidden").css("overflow-x", "hidden");
}else{
$(".ui-autocomplete").css("height", altoCombo).css("overflow-y", "scroll").css("overflow-x", "hidden");
}
},
error : function() {
if ( $(this).attr("id") == "origen" ){
parent.crearModal('Alerta', '<ml:message id="1" value="Hay un error en la peticion de ORIGEN."/>');
} else {
parent.crearModal('Alerta', '<ml:message id="2" value="Hay un error en la peticion de DESTINO."/>');
}
},
autoFocus: true,
focus: function(event, ui){
if (ui.item) {
var codzon = "P:" + ui.item.codpai + "#" + ui.item.codepr + "#" + ui.item.codpob + "#" + ui.item.codare;
if($(this).attr("id") == "origen"){
$("#oricodzona").val(codzon);
$("#orideszona").val(ui.item.value);
}else{
$("#descodzona").val(codzon);
$("#desdeszona").val(ui.item.value);
}
} else {
if($(this).attr("id") == "origen"){
$("#oricodzona").val("");
}else{
$("#descodzona").val("");
}
}
}
});
$(“#origen,#destino”).autocomplete({
来源:功能(请求、响应){
$(“#cargando”).show();
//原材料和材料的不同之处(2012年7月3日)
var term=request.term;var termCache=request.term+“-”+$(this.element).attr(“id”);
if(缓存中的termCache){
响应(缓存[termCache]);
setTimeout($('#cargando').hide();“,2000);//ocultamos con retraso 2 seg
返回;}
if($(this.element).attr(“id”)=“origen”){
//空气过滤器可以单独使用
如果(parent.codMarca=='NET')
paises=“| PT | ES |”;
urlxx=“../jsp/buscador/autocompletevuelos.jsp?sesion=“+sesion+”&term=“+term+”&codidi=“+codidi+
“&tipPro=VH&paises=“+codpai+”&codEmp=“+parent.codEmp+”&codMarca=“+parent.codMarca+”&codWcn=“+
parent.codWcn+“&orides=O”;}else{
urlxx=“../jsp/buscador/autocompletepoblationes.jsp?sesion=“+sesion+
“&term=“+term+
“&codidi=“+codidi+
“&tipoProducto=VH&codemp=“+codemp+
“&codwcn=“+codwcn+”&codMarca=“+parent.codMarca;”
lastXhr=$.getJSON(urlxx,请求,函数(数据,状态,xhr){
cache[termCache]=数据;
如果(xhr==lastXhr){
答复(数据);
setTimeout($('#cargando').hide();“,2000);//ocultamos con retraso 2 seg
}
});
},
最小长度:2,
选择:函数(事件,ui){
var component=$(this.attr(“id”);
if(ui.item){
//埃斯帕尼奥尔群岛的航空普洱群岛居民的健康状况,以及他们的健康状况
//康斯塔科莫公寓。
if(组件E==“原材料”){
$(“#oriCodApt”).val(ui.item.id);
$(“#orideszona”).val(ui.item.value);
$(“#oricodpai”).val(ui.item.codpai.toUpperCase());
$(“#oriresidente”).val(ui.item.residente.toUpperCase());
}否则{
$(“#desCodApt”).val(ui.item.codapt);
$(“#deszona”).val(ui.item.value);
$(“#descodpai”).val(ui.item.codpai.toUpperCase());
$(“#desresidente”).val(ui.item.residente.toUpperCase());
$(“#CADA”).val(ui.item.codpai.toUpperCase()+“#”+
ui.item.codepr.toUpperCase()+“#”+
ui.item.codpob.toUpperCase()+“#”+
ui.item.codare.toUpperCase());
$(“#numaropuertos”).val(ui.item.numaropuertos==未定义?0:ui.item.numaropuertos);
$(“#fueraCiudad”).val(ui.item.fueraCiudad==未定义?”:ui.item.fueraCiudad);
}
Validaresident();
}
},
打开:函数(e,ui){
var autoData=$(this.data('autocomplete');
var reserText=“、de、del、el、la、las、los、en”;
var altoCombo=200;//Altura del combo del autocomplete。
var component=$(this.attr(“id”);
css({'width':''+anchoMinimo+'px'});
autoData.menu.element.find('li')。每个(函数(){
var fila=$(本);
var texto=fila.text().toLowerCase().replace(autoData.term.toLowerCase(),“”+autoData.term.toLowerCase()+“”);
var自动图文集=”;
texto=texto.split(“”);
对于(变量i=0;i0)){
自动图文集+=texto[i]+“”;
}else if(texto[i]。子字符串(0,3)=“”){
自动图文集+=''+texto[i].charAt(3).toUpperCase()+texto[i].substring(4)+'';
}否则{
自动图文集+=texto[i].charAt(0).toUpperCase()+texto[i].substring(1)+'';
}
}
自动图文集=自动图文集。替换(“De”、“De”)。替换(“Del”、“Del”)。替换(“Los”、“Los”)。替换(“El”、“El”)。替换(“En”、“En”)。替换(“La”、“La”)。替换(“Las”、“Las”);
//EL C.Digo de Apopoputo,LoQua VA中心。
if(组件E==“原材料”){
var tamPrimerCorte=自动图文集.split(“”).length;
var textoEnParentesis=自动图文集.split(“”[tamPrimerCorte-1];
textoEnParentesis=textoEnParentesis.split(“)”[0];
自动图文集=自动图文集.replace(“(“+textoEnParentesis+”),“(“+textoEnParentesis.toUpperCase()+”);
}
fila.find('a')。文本(“”);
fila.find('a').append(自动图文集);
//阿霍拉·瓦莫斯(Ahora vamos)是卡德纳音乐节(cadena más ancha)的一位演说家,他是一位出色的女主播。
ancho=autoText.length*5;//Con-esta-fuente-de-letra,en-IE等。。。
如果(ancho>anchoFilaDestinos){
anchoFilaDestinos=ancho;
}
//安科海滩酒店。
fila.find('a').css({'white-space':'nowrap'});
});
//干草q