Estoy trabajando con JSP y deseo que en una tabla que obviamente esta dentro de un DIV se me actualicen los registros de acuerdo a la letra que el usuario presione en una caja de texto, algo asi como una consulta dinamica, para lograr mi cometido estoy haciendo uso de la libreria prototype incluida en scriptaculous, hasta cierto punto lo que quiero funciona pero no al 100% como yo lo deseo, pues cuando el usuario digita una letra se ejecuta la consulta pero sin incluir la ultima tecla pulsada, es algo dificil de explicar pero voy a tratar de ilustrarlo:
por ejemplo si el usuario ha digitado en la caja de texto: Jua
Deberia devolver todos los registros que coinciden con las 3 letras : jua
el problema es que solo devuelve los registros de 2 letras: ju
como si no se alcanzara a capturar la ultima letra que se va pulsando, ya intente con varios eventos de la caja de texto como lo son: onchange, onkeypress, onkeyup, onkeydown y onblur, todos presentan el mismo problema, el codigo de esta caja de texto lo tengo de la siguiente manera:
Codigo HTML de la pagina expmain.jsp (aqui es donde el usuario hace la busqueda y se muestran los resultados)
<input id="search" name="search" type="text" onkeydown="new Ajax.Updater('panelderecho','expmain_updatediv.jsp?condicion='+this.value);">
<div id="panelderecho">
</div>
esta es la pagina que actualiza al div:
Codigo Pagina expmain_updatediv.jsp
<%
String cond=request.getParameter("condicion");
out.println(cond);
clsConexionBD icn=(clsConexionBD) application.getAttribute("BaseDatos");
clsNomTab tb = new clsNomTab();
out.println("<table>");
out.println("<th>ID</th>");
out.println("<th>Nombres</th>");
out.println("<th>Apellidos</th>");
out.println("<th>DUI</th>");
out.println("<th>Código</th>");
out.println("<tr>");
clsMaestros exped=new clsMaestros(tb.EXPEDIENTES);
Collection cexp = exped.Consultar(icn, cond);
if (cexp != null){
if(cexp.size()>0){
for (Iterator it=cexp.iterator(); it.hasNext();){
clsRegistros regexp=(clsRegistros) it.next();
out.println("<tr>");
out.println("<td>"+regexp.getc1()+"</td><td>"+regexp.getc2()+"</td><td>"+regexp.getc3()+"</td><td>"+regexp.getc4()+"</td><td>"+regexp.getc9());
out.println("</tr>");
}
}
}
out.println("</tr>");
out.println("</table>");
Lo ultimo que me hace falta probar es lo siguiente, segun leo en la referencia del Ajax.updater yo bien podria pasar en valor de la variable condicion por medio de un parametro que se llama parameters de la siguiente manera:
new Ajax.Updater('items', '/items', {
parameters: { text: $F('text') }
});
el problema principal es que por ningun lado del bendito internet me dicen como recupero ese valor del otro lado para pasarselo como condicion a la consulta SQL en esta parte:
Collection cexp = exped.Consultar(icn, cond);
ya me di riata 2 dias sin ningun efecto positivo, que alguien me ilumine pues necesito avanzar en el desarrollo de esta cosa...