Les comento una duda para ver si me pueden echar un cable y de paso, les copio el código funcional al 90% por si le sirve a alguien (por cierto, le dejo las trazas comentadas :-p ).
El tema es que he hecho una búsqueda con 'auto completar' utilizando XAJAX. He creado la función y la he puesto en el evento 'onkeyup' y según va encontrando resultados, muestra una capa oculta y crea una lista con los datos obtenidos.
Hasta aquí todo funciona OK, el problema lo tengo cuando se queda el campo de búsqueda vacío, que no consigo que me vuelva a ocultar la capa. Es decir, si empiezo a escribir , corrijo y se queda en blanco, la idea es que si borro hasta que se quede limpio el campo de texto, se vuelva a ocultar de nuevo la capa, pero lo hace justo al revés, si el campo está vacío, pierde el filtro y muestra todos los resultados.
Pues nada, espero que me puedan echar una mano y espero que le sirva a alguien el código, porque he visto varios temas consultando cómo hacer algo así y que con unas ideas y otras, me han orientado para montar este sistema.
Una última pregunta, para evitar el SQL-Injection, no sé si sería recomendable hacerle algo más, aunque está en una zona 'privada', que no debería ser accesible a nadie, aunque nunca se sabe.
Muchas gracias y un saludo.
Código HTML:
<input type="text" name="busc_alumno" id="busc_alumno" value="Escribe el nombre ..." onkeyup="xajax_buscarAlumno(this.value)" /> <div id="alumnoResult" class="oculto"> <!-- carga resultado de búsuqeda --> </div>
Código PHP:
function buscarAlumno($inputText) {
// se instancia el objeto para recibir la respuesta
$respuesta = new xajaxResponse();
if((trim($inputText) == "") || (trim($inputText) == "Escribe el nombre ...") || (strlen(trim($inputText)) < 1 )) {
$respuesta->assign("alumnoResult","style.display","none");
$listadoAlumnos = "";
}else{
$mysql = new MySQL('localhost','root','','lt_diplomas');
$sql = "select * from diploma_pdf where alumno_nombre like '%".trim($inputText)."%' order by alumno_nombre";
$consulta = $mysql->consulta($sql);
$total = $mysql->num_rows($consulta);
// $respuesta -> alert($total);
// $respuesta -> alert($sql);
if ($total > 0) {
// echo "<br>";
// $respuesta -> alert('entramos');
$listadoAlumnos = "<ul id='listadoAlumnos'>";
while($resultados = $mysql->fetch_array($consulta)) {
$listadoAlumnos .= "<li><a href='#' onclick='xajax_selectAlumno(\"".$resultados['idDiploma']."\",\"".utf8_decode($resultados['alumno_nombre'])."\")'>".utf8_decode($resultados['alumno_nombre'])."</li>";
}
$listadoAlumnos .= "</ul>";
}else{
$listadoAlumnos = "No hay coincidencias encontradas.";
// $respuesta -> alert('na\' que hacer');
}
//
$respuesta -> assign("alumnoResult","style.display","block");
// $respuesta -> alert('llegamos aquí');
$respuesta -> assign("alumnoResult","innerHTML",$listadoAlumnos);
return $respuesta;
}
}
Código:
// Borra contenido por defecto del campo de búsqueda de alumnos en form alta diploma $("#busc_alumno").click(function(){ var busqueda = $("#busc_alumno").val(); if (busqueda == "" || busqueda == "Escribe el nombre ...") { $("#busc_alumno").val(""); event.preventDefault(); } }); $("#busc_alumno").blur(function(){ var busqueda = $.trim($("#busc_alumno").val()); if (busqueda == "" || busqueda == "Escribe el nombre ...") { $("#busc_alumno").val("Escribe el nombre ..."); //alert("1" + busqueda + "1"); event.preventDefault(); } });