JQuery - Desplazamiento con teclado

 
Vista:

Desplazamiento con teclado

Publicado por Leandro Alfonso (2 intervenciones) el 07/06/2018 20:42:15
Buenas tardes para todos.

La pregunta es la siguiente, tengo un div, dentro de ese hay varios links <a>. Lo que necesito es poder desplazarme dentro de estos links con el teclado, el código es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
function buscar($b,$tabla,$campo,$campo_id,$accion){
 
    include('conecta.php');
    if($b<>" "){ //si es espacio abre los primero diez registro de la tabla
        $cons = "SELECT A.*,B.nombre AS nom_dep FROM $tabla A LEFT JOIN departamentos B ON A.id_departamento=B.id_departamento WHERE A.$campo LIKE '%".$b."%' LIMIT 10";
    }else{
        $cons = "SELECT A.*,B.nombre AS nom_dep FROM $tabla A LEFT JOIN departamentos B ON A.id_departamento=B.id_departamento LIMIT 0,10";
    }
 
    $sql = $conexion->prepare($cons);
    $sql->execute();
    $resultado = $sql->fetchAll();
    $contar = count($resultado);
 
 
    echo "<div class='list-group'>";
    if($contar==0){
        //echo "no se encontraron registros";
            $id = null;
            echo"<a onclick='".$accion."(".$id.");' role='button' class='list-group-item'>";
            echo"  <h4 class='list-group-item-heading'>No Existen Registros </h4>";
            echo"  <p class='list-group-item-text'>Intente de Nuevo</p>";
            echo"</a>";
    }else{
 
        $sqls = $conexion->prepare($cons);
        $sqls->execute();
        while($row = $sqls->fetch()){
            $nombre = $row[$campo];
            $id = $row[$campo_id];
            $nom_dep = $row['nom_dep'];
 
            echo"<a onclick='".$accion."(".$id.");' role='button' class='list-group-item'>";
            echo"  <h4 class='list-group-item-heading'>$nombre ($nom_dep)</h4>";
            echo"  <p class='list-group-item-text'>Identificador Interno: $id</p>";
            echo"  <input type='hidden' id='id_".$id."' value='".$id."'>";
            echo"  <input type='hidden' id='no_".$id."' value='".$nombre."'>";
            echo"</a>";
 
 
        }
 
    }
    echo "</div>";
    $conexion = null;
}

Una imagen para explicar un poco mejor lo que necesito hacer. Cuando aparecen las opciones, lo que deseo es con teclado poder elegir una y no tener que hacerlo con el mouse.

foro

Saludos

Leandro Arevalo
Bogotá Colombia
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de santi
Val: 162
Plata
Ha mantenido su posición en JQuery (en relación al último mes)
Gráfica de JQuery

Desplazamiento con teclado

Publicado por santi (55 intervenciones) el 08/06/2018 01:10:54
Hola,

a ver, yo he tenido que utilizar este tipo de comportamientos y lo mejor es utilizar un plugin de jQuery, y hay unos cuantos:

http://easyautocomplete.com/
https://jqueryui.com/autocomplete/
https://www.devbridge.com/sourcery/components/jquery-autocomplete/

O preguntar autocomplete search jQuery (o similar) al dios Google y tendrás unos cuantos resultados...

Lo que pasa que viendo solo el contenido PHP que has añadido es difícil...

Pero si quieres hacerlo desde 0, primero debes saber que letra se ha tecleado con jQuery:
1
2
3
4
5
6
7
8
//suponiendo que "#buscador" es el id del campo de texto
$('#buscador').keyup(function(e){
    e.preventDefault();
    if(e.keyCode === 40){//tecla flecha hacia abajo
        //si el resultado de tus propuestas es un ul > li con una clase .active
        $('ul li.active').next().focus();//Debe de seleccionar el siguiente resultado en el caso de que sea un "<li>" con una clase "active" y el primero esté seleccionado
    }
}

Ya te digo, sin ver tu jQuery y sin yo probar el código en vivo es difícil pero desde mi punto de vista lo mejor es utilizar un plugin de jQuery y como dicen muchos "no reinventar la rueda".

Prueba a ver y nos comentas ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Desplazamiento con teclado

Publicado por leandro arevalo (2 intervenciones) el 20/06/2018 21:17:25
Hola a todos... finalmente desarrolle una función que se encarga de hacer exactamente lo que necesito. Quedo de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function actualiza_busquedas(){
 
	if (event.keyCode==38){
		elementos = $(".resultado a").length;
		if (activo<=1){
			activo=1;
		}else{
			activo--;
		}
	}else if(event.keyCode==40){
		elementos = $(".resultado a").length;
		if (activo>=elementos){
			activo=elementos;
		}else{
			activo++;
		}
	}else if(event.keyCode==13){
		$('#lnk_bu_'+activo).click();
	}else{
		var nom_fun = $("#hid_fun_busca").val();
		eval(nom_fun);
		activo=1;
	}
 
	id_viene = "lnk_bu_"+activo;
	//seleccionamos los elementos que hay dentro del ul y los recorremos para marcar el active
	$(".resultado a").each(function(index) {
		var id_toda = $(this).attr('id');
		if(id_toda==id_viene){
			$("#"+id_toda).attr('class', 'list-group-item active');
		}else{
			$("#"+id_toda).attr('class', 'list-group-item');
		}
	});
 
 
}

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve
Val: 302
Oro
Ha mantenido su posición en JQuery (en relación al último mes)
Gráfica de JQuery

Desplazamiento con teclado

Publicado por xve (673 intervenciones) el 21/06/2018 08:42:05
Gracias por compartirlo Leandro!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar