Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/02/2012, 09:48
eduardoHashil
 
Fecha de Ingreso: diciembre-2011
Mensajes: 11
Antigüedad: 12 años, 5 meses
Puntos: 0
Pregunta Texto Predictivo en un Select.

Hola a todos los expertos:

Antes que nada les envío un saludo y les comento que he estado buscando un script para poder hacer las veces de texto predictivo en un input text. Es decir, una vez que se carga una consulta a la BD en un select, al ir tecleando los caracteres, el script tiene que ir seleccionando las opciones más cercanas a la búsqueda.

Ya probé este script

Código:
<script language="JavaScript1.2">
var digitos=10 //cantidad de digitos buscados
var puntero=0
var buffer=new Array(digitos) //declaración del array Buffer
var cadena=""

function buscar_op(obj,objfoco){
   var letra = String.fromCharCode(event.keyCode)
   if(puntero >= digitos){
       cadena="";
       puntero=0;
    }
   //si se presiona la tecla ENTER, borro el array de teclas presionadas y salto a otro objeto...
   if (event.keyCode == 13){
       borrar_buffer();
       if(objfoco!=0) objfoco.focus(); //evita foco a otro objeto si objfoco=0
    }
   //sino busco la cadena tipeada dentro del combo...
   else{
       buffer[puntero]=letra;
       //guardo en la posicion puntero la letra tipeada
       cadena=cadena+buffer[puntero]; //armo una cadena con los datos que van ingresando al array
       puntero++;

       //barro todas las opciones que contiene el combo y las comparo la cadena...
       for (var opcombo=0;opcombo < obj.length;opcombo++){
          if(obj[opcombo].text.substr(0,puntero).toLowerCase()==cadena.toLowerCase()){
          obj.selectedIndex=opcombo;
          }
       }
    }
   event.returnValue = false; //invalida la acción de pulsado de tecla para evitar busqueda del primer caracter
}

function borrar_buffer(){
   //inicializa la cadena buscada
    cadena="";
    puntero=0;
}
</script>

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<table width="544" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="89" height="29"></td>
<td width="114"></td>
<td width="26"></td>
<td width="315"></td>
</tr>
<tr>
<td height="19"></td>
<td valign="top">
<select name="combo1" onKeypress=buscar_op(this,text2) onblur=borrar_buffer() onclick=borrar_buffer()>
    <option>Argentina</option>
    <option>Australia</option>
    <option>Bolivia</option>
    <option>Brasil</option>
    <option>Canada</option>
    <option>Colombia</option>
    <option>Dinamarca</option>
    <option>Estados Unidos</option>
    <option>Estonia</option>
    <option>Austria</option>
    <option>Bulgaria</option>
    <option>Chile</option>
    <option>España</option>
    <option>China</option>
    <option>Costa Rica</option>
    <option>Croacia</option>
    <option>Ecuador</option>
</select>
</td>
<td></td>
<td></td>
</tr>
<tr>
<td height="18"></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="28"></td>
<td colspan="2" valign="top">
<input type="text" name="text2">
</td>
<td></td>
</tr>
<tr>
<td height="58"></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</body>
</html>
Pero algo debo estar haciendo mal porque no hace la búsqueda predictiva.

De antemano agradezco sus comentarios, opiniones, regaños, sugerencias y lo que ustedes puedan aportar

Un gran saludo
Eduardo.