• Publicidad

Emular CTRL+Click al hacer click en un select múltiple

Discute todo acerca de JavaScript así como DHTML o la tecnología AJAX.

Emular CTRL+Click al hacer click en un select múltiple

Notapor AgeValed » 2008-11-18 06:57 @331

Buenas gente de perlenespanol:

Encontré este código por la web y hace lo que necesito pero con un problema, cuando seleccionas uno se va al último de la lista seleccionada... yo quería ver si hay alguna forma de que eso no pase y se quede donde estaba, ya que la lista que tengo son muchísimos y es molesto que pase eso.
Sintáxis: [ Descargar ] [ Ocultar ]
  1. <html> 
  2. <head> 
  3. <title> 
  4. simular ctrMays 
  5. </title> 
  6. <script type="text/javascript"> 
  7. function ini() { 
  8. window["listass"] = new Array(); 
  9. var dato = document.forms["Form1"].listasel.options; 
  10. for (var i = 0, total = dato.length; i < total; i ++) 
  11. window["listass"][i] = dato[i].selected; 
  12. // --> 
  13. function ctrMays() { 
  14. var dato = document.forms["Form1"].listasel.options; 
  15. for (var i = 0, total = dato.length; i < total; i ++) 
  16. if (dato[i].selected) 
  17. listass[i] = !listass[i];  
  18. for (var i = 0, total = dato.length; i < total; i ++) 
  19. dato[i].selected = listass[i]; 
  20.  
  21. </script> 
  22. </head> 
  23. <body onload="ini()"> 
  24. <form method="post" action="" name="Form1"> 
  25. <select multiple onchange="javascript:ctrMays()" size="10" name="listasel"> 
  26. <option value="t1" selected="selected" >texto 1</option> 
  27. <option value="t2" >texto 2</option> 
  28. <option value="t3" selected="selected" >texto 3</option> 
  29. <option value="t4" >texto 4</option> 
  30. <option value="t5" >texto 5</option> 
  31. <option value="t6" >texto 6</option> 
  32. <option value="t7" selected="selected" >texto 7</option> 
  33. <option value="t8" >texto 8</option> 
  34. <option value="t9" >texto 9</option> 
  35. </select> 
  36. </form> 
  37. </body> 
  38. </html> 



Saludos.. Pablo
AgeValed
Perlero nuevo
Perlero nuevo
 
Mensajes: 33
Registrado: 2008-09-19 09:35 @441

Publicidad

Notapor explorer » 2008-11-18 07:32 @356

La solución obvia es enseñar al usuario a usar la tecla Control.

De otra forma (no probado), podrías modificar la función ctrMays() para que, primero, guarde en una variable la entrada que está seleccionada (con selectedIndex()) y, al final, darle a selectedIndex() ese mismo valor.

Actualización: Puedo confirmarte que en Konqueror sí que funciona el código que has puesto y de la forma que deseabas. En cambio, en Firefox 3, no. Así que es cosa de cada cliente.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor AgeValed » 2008-11-18 09:31 @438

Gracias por la respuesta. Por lo pronto lo dejamos con Control, pero si encuentro una solución que funcione bien veo de cambiarla, lo de selectedIndex, no la conocía. Ahora veo.

Gracias, Pablo.
AgeValed
Perlero nuevo
Perlero nuevo
 
Mensajes: 33
Registrado: 2008-09-19 09:35 @441


Volver a JavaScript

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado