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