Tengo una búsqueda autocompletada, en la que al escribir algunos caracteres se mostrarán todos los nombres, que coinciden con el carácter introducido. Estoy llenando estos datos en el jsp usando la etiqueta DIV, usando el mouse, puedo seleccionar los nombres. Pero quiero seleccionar los nombres en la etiqueta DIV que se seleccionarán usando la flecha hacia arriba y hacia abajo del teclado. ¿Alguien puede por favor ayudarme con esto?Flechas arriba y abajo del teclado
Respuesta
Supongo que tiene una entrada que maneja la entrada.
map onkeyup-eventhandler para esa entrada en la que lee event.keyCode, y hace cosas cuando se trata de los códigos clave apropiados para arriba/abajo-flecha (38, 40), para mantener una referencia a qué nodo (elemento en su div) mueve el foco a.
Luego llame al mismo controlador cuando presione enter (keyCode 13) como lo hace al hacer clic.
Es difícil dar un ejemplo de codificación porque depende mucho del contexto, pero un consejo sobre cómo navegar a través de su div es hacernos de .nextSibling y .previousSibling, así como .firstChild y .childNodes.
Mucho tiempo desde que hice esto, pero supongo que puede usar event.keyCode
.
Si los valores devueltos son 38 y 40, entonces el usuario ha presionado las flechas hacia arriba y hacia abajo, respectivamente.
Luego debe seleccionar la fila arriba o debajo de su posición actual. Cómo seleccionar la fila dependerá de su situación particular.
Usar los eventos onkeydown
y onkeyup
para comprobar si hay eventos de pulsación de teclas en sus resultados div:
var UP = 38;
var DOWN = 40;
var ENTER = 13;
var getKey = function(e) {
if(window.event) { return e.keyCode; } // IE
else if(e.which) { return e.which; } // Netscape/Firefox/Opera
};
var keynum = getKey(e);
if(keynum === UP) {
//Move selection up
}
if(keynum === DOWN) {
//Move selection down
}
if(keynum === ENTER) {
//Act on current selection
}
copia y pega este fragmento de código y tratar ..
<style>
div.active{
background: lightblue
}
</style>
<center>
<input type="text" id="tb">
<div id="Parent" style="position:absolute;display:block;left:428px; width:146px;top:38px; height:100px; border: 2px solid lightblue; overflow:auto;">
<div id="childOne">1 </div>
<div id="childOne">2 </div>
<div id="childOne">3 </div>
<div id="childOne">4 </div>
<div id="childOne">5 </div>
<div id="childOne">6 </div>
<div id="childOne">7 </div>
<div id="childOne">8 </div>
<div id="childOne">9 </div>
<div id="childOne">10 </div>
</div>
</center>
<script type="text/javascript">
var scrolLength = 19;
function autocomplete(textBoxId, containerDivId) {
var ac = this;
this.textbox = document.getElementById(textBoxId);
this.div = document.getElementById(containerDivId);
this.list = this.div.getElementsByTagName('div');
this.pointer = null;
this.textbox.onkeydown = function(e) {
e = e || window.event;
switch(e.keyCode) {
case 38: //up
ac.selectDiv(-1);
break;
case 40: //down
ac.selectDiv(1);
break; }
}
this.selectDiv = function(inc) {
if(this.pointer > 1){
scrollDiv();
}
if(this.pointer == 0)
document.getElementById("Parent").scrollTop = 0;
if(this.pointer !== null && this.pointer+inc >= 0 && this.pointer+inc < this.list.length) {
this.list[this.pointer].className = '';
this.pointer += inc;
this.list[this.pointer].className = 'active';
this.textbox.value = this.list[this.pointer].innerHTML;
}
if(this.pointer === null) {
this.pointer = 0;
scrolLength = 20;
this.list[this.pointer].className = 'active';
this.textbox.value = this.list[this.pointer].innerHTML;
}
}
function scrollDiv(){
if(window.event.keyCode == 40){
document.getElementById("Parent").scrollTop = scrolLength;
scrolLength = scrolLength + 19;
}
else if(window.event.keyCode == 38){
scrolLength = scrolLength - 19;
document.getElementById("Parent").scrollTop = scrolLength;
}
}
}
new autocomplete('tb', 'Parent');
</script>
He creado un violín basado en el código: http://jsfiddle.net/8Fj8n/ – noj
- 1. QLineEdit: cómo manejar las flechas arriba y abajo?
- 2. UITableView Shadows arriba y abajo
- 3. arriba() y abajo() versus Ext.getCmp()
- 4. WPF - Crear botones con flechas hacia arriba y hacia abajo usando los botones estándar
- 5. ¿Diseño de arriba hacia abajo o de abajo hacia arriba?
- 6. Usando TDD: "arriba hacia abajo" vs. "abajo hacia arriba"
- 7. Gramática: ¿diferencia entre arriba hacia abajo y hacia abajo? (Ejemplo)
- 8. ¿Cómo implementar un historial de comandos en un cliente telnet? (flechas arriba/abajo)
- 9. ¿Arriba y abajo numéricos en HTML?
- 10. Diseño y codificación: de arriba a abajo o de abajo hacia arriba?
- 11. Voltear UIViews desde arriba/abajo
- 12. detectando dedo arriba/abajo UITapGestureRecognizer
- 13. Código C#: primera migración, arriba/abajo?
- 14. Activación proyecto aguas arriba construye antes del proyecto aguas abajo
- 15. Plataforma azul: instancias de escala arriba y abajo
- 16. Cómo mover div de abajo a arriba
- 17. Ventana emergente arriba Teclado virtual
- 18. jQuery Sortable Move Botón ARRIBA/ABAJO
- 19. Relleno (izquierda, arriba, derecha, abajo) en WPF
- 20. jQuery Masonry de abajo hacia arriba
- 21. Guión de votación de arriba/abajo
- 22. Problema de diseño: ¿cómo colocar algo arriba y abajo?
- 23. Redondeo eficiente de BigDecimal Arriba y abajo a dos decimales
- 24. ¿Diferenciar entre desplazamiento arriba/abajo en jquery?
- 25. ¿Es posible SIMULAR un clic del mouse con un mouse hacia abajo y hacia arriba?
- 26. Apilando imágenes de abajo hacia arriba en div
- 27. Redondeo de valores hacia arriba o hacia abajo en C#
- 28. cómo atrapar la interrupción de NIC (arriba/abajo)?
- 29. grep de abajo hacia arriba de un archivo
- 30. Top Down v enfoque de abajo hacia arriba diseño
puede u plz dar alguna ejemplo de cómo hacer ésto es ... –
Ok ... aquí va ... función showKeyCode (e) { alert ("código clave para la tecla presionada:" + e.keyCode); } y en su etiqueta DIV, llamará al método anterior de esta manera: onkeydown = "showKeyCode (event);" Supongo que esto debería funcionar. –