miércoles, 19 de noviembre de 2008

Trasteando con Ajax y las combos

Llevo unos días trasteando con Ajax y siguiendo el fantástico tutorial de w3schools. No te voy a aburrir en este post con el tremendo mundo de posibilidades que se me ha abierto ante mis ojos con esta tecnología.

Lo que te voy a contar, por si te sirve de ayuda, es el problemilla que tuve con las diferencias que existen entre los distintos navegadores. Pues bien, yo tení algo así:

<form name="myForm">
Name: <input type="text"
onkeyup="ajaxFunction();" name="username" />

Time: <input type="text" name="time" />
</form>


Y decidí cambiar la textBox por una combo, y pasarle el contenido de la combo a la función Ajax:


onclick="BuscarCodigo(micombo.value)"


Y en Explorer funciona perfectamente... pero no todo iba a ser tan bonito. Resulta que en Firefox nada de nada. Ni siquiera llegaba a ejecutar el contenido del script. ¿Pues que está pasando? Después de revisar ciento y un foros me encontré con que en Firefox las combos hay que tratarlas de una forma un poco especial, tanto a la hora de definirlas como a la hora de pasar el valor, utilizando la función getElementById (que por cierto, resulta trementamente útil).

Lo primero que hay que hacer es asignarle un identificador a la combo (un id, algo que se puede hacer en muchos otros objetos).


<select id="micombo" name="micombo">


Ahora, cambiamos micombo.Value por getElementById en la llamada a la función:


onclick="BuscarCodigo(document.getElementById('micombo').value)"


Y listo. Script funcionando tanto en Explorer como en Firefox. A si que recuerda, si utilizas una combo asígnale un id y utiliza el getElementById para que funcione en varios navegadores. Y yo me pregunto ¿porque no implementarán todo esto de forma estándar para no complicarnos tanto la vida?

No hay comentarios: