Foros del Web » Programando para Internet » Javascript »

cambiar value de un input una vez cargado el DOM

Estas en el tema de cambiar value de un input una vez cargado el DOM en el foro de Javascript en Foros del Web. Hola gente, tengo que decir , que tal como tengo el código ahora , funciona en Mozilla perfectamente, el problema es con IE (como no). ...
  #1 (permalink)  
Antiguo 30/11/2011, 04:54
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 4 meses
Puntos: 8
cambiar value de un input una vez cargado el DOM

Hola gente, tengo que decir , que tal como tengo el código ahora , funciona en Mozilla perfectamente, el problema es con IE (como no).

Tengo dos sencillas funciones, una llamada init que recoge a traves de otra función get_param() el nombre de un dominio por url. Y una segunda domain_name que lo que hace es cambiar el valor por defecto del campo con ese nombre tan largo.

Código:
<script language="javascript">
function init() {
var domain=get_param();
domain_name(domain);
}
function domain_name(domain) {
var campo = new Array() 
campo=document.getElementsByName('_f62c2f350236285eab8d9a77e0fbaf24');
campo[0].defaultValue = "www."+domain;
alert('Dominio solicitado: '+campo[0].defaultValue);
}
</script>
Por último las cargo una vez cargado el DOM, para asegurarme que el formulario ya esta creado en el DOM.
Código:
<script type="text/javascript" >

window.onload = init; 
</script>
Alguna idea de porque no funciona con IE?.
Gracias de antemano.
__________________
Videotutoriales de Drupal
  #2 (permalink)  
Antiguo 30/11/2011, 11:11
Avatar de Raziel_Ravenheart  
Fecha de Ingreso: agosto-2011
Ubicación: Ibagué, Tolima
Mensajes: 192
Antigüedad: 13 años, 2 meses
Puntos: 37
Respuesta: cambiar value de un input una vez cargado el DOM

Tu problema podría estar en la función getElementsByName, ya que internet explorer y opera, recorren todos los elementos que tengan el valor buscado tanto en el atributo id como en el atributo name

Cita:
The getElementsByName method works differently in different browsers.

* In Internet Explorer and Opera, it searches and returns the elements matched by id and name attributes.
* In Firefox, Google Chrome and Safari, only elements with matching name attributes are returned.
Tomado de: getElementsByName method

Por otro lado, esa función get_param(), es de jQuery, o de donde la implementaste? me gustaríe hecharle una ojeada a ver que código incompatible con IE encontramos ahí
  #3 (permalink)  
Antiguo 30/11/2011, 13:08
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 4 meses
Puntos: 8
Respuesta: cambiar value de un input una vez cargado el DOM

Cita:
Iniciado por Raziel_Ravenheart Ver Mensaje

Por otro lado, esa función get_param(), es de jQuery, o de donde la implementaste? me gustaríe hecharle una ojeada a ver que código incompatible con IE encontramos ahí
No, no es de Jquery , es una función normalita javascript que recoge los parámetros pasados por url, pero no la he puesto porque funciona perfectamente, la he probado con alert() y funciona en IE.
Aún así , ahí va.
Código:
function get_param() {
var Url = location.href;
Url = Url.replace(/.*\?(.*?)/,"$1");
Variables = Url.split ("&");
for (i = 0; i < Variables.length; i++) {
       Separ = Variables[i].split("=");
       eval ('var '+Separ[0]+'="'+Separ[1]+'"');
      
}
 return domain;
}
Insisto que esta función trabaja perfectamente en todos los navegadores que he probado.
Un saludo
__________________
Videotutoriales de Drupal
  #4 (permalink)  
Antiguo 30/11/2011, 13:54
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: cambiar value de un input una vez cargado el DOM

buenas,
debes explicar que tipo de error obtienes. el navegador te muestra algún aviso o esperas un resultado el cual no obtienes. en iexplorer parece que no es posible cambiar el valor del campo a traves de la propiedad defaultValue, intenta con value. adicionalmente, considera lo indicado por @raziel.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 30/11/2011, 15:56
Avatar de Raziel_Ravenheart  
Fecha de Ingreso: agosto-2011
Ubicación: Ibagué, Tolima
Mensajes: 192
Antigüedad: 13 años, 2 meses
Puntos: 37
Respuesta: cambiar value de un input una vez cargado el DOM

Aunque llegué a pensarlo, justo antes de leerlo de nuevo, ví que zerokilled ya te lo ha dicho... mira si el atributo defaultValue, se comporta como debe en Internet Explorer, y trata de ver los resultados de la ejecución del script en la consola utilizando las herramientas de desarrollo, generalmente se abren con F12.

Código Javascript:
Ver original
  1. eval ('var '+Separ[0]+'="'+Separ[1]+'"');

Una recomendación, no utilices esa función eval, trata de cambiarla, esa función es maligna...xD y si estuvieras haciendo un login, de seguro buscan el modo para valerse de esta función y dañarte la ejecución de tu script.
  #6 (permalink)  
Antiguo 30/11/2011, 16:06
Avatar de Raziel_Ravenheart  
Fecha de Ingreso: agosto-2011
Ubicación: Ibagué, Tolima
Mensajes: 192
Antigüedad: 13 años, 2 meses
Puntos: 37
Respuesta: cambiar value de un input una vez cargado el DOM

zerokilled tiene toda la razón es defaultValue, por que intenté modificando este código

Código Javascript:
Ver original
  1. <html>
  2. <head>
  3. <script type="text/javascript">
  4. function displayResult()
  5. {
  6. var x=document.getElementById("email").defaultValue;
  7. alert(x);
  8. }
  9. </script>
  10. </head>
  11. <body>
  12.  
  13. <form>
  14. Email: <input type="text" id="email" value="[email protected]" />
  15. </form>
  16.  
  17. <button type="button" onclick="displayResult()">Display default value</button>
  18.  
  19. </body>
  20. </html>

que encontré en w3schools:
w3Schools ejemplo defaultValue

y lo modifiqué con un window.onload así:

Código Javascript:
Ver original
  1. <html>
  2. <head>
  3. <script type="text/javascript">
  4. window.onload = function () {
  5.   document.getElementById("email").defaultValue = "yahoo";
  6. }
  7.  
  8. function displayResult()
  9. {
  10. var x=document.getElementById("email").defaultValue;
  11. alert(x);
  12. }
  13. </script>
  14. </head>
  15. <body>
  16.  
  17. <form>
  18. Email: <input type="text" id="email" value="[email protected]" />
  19. </form>
  20.  
  21. <button type="button" onclick="displayResult()">Display default value</button>
  22.  
  23. </body>
  24. </html>

Traté de ejecutarlos en ambos navegadores y no funcionó en IE8, que es el que tengo.

Trata cambiando defaultValue por value.

Saludos
  #7 (permalink)  
Antiguo 30/11/2011, 16:13
Avatar de Raziel_Ravenheart  
Fecha de Ingreso: agosto-2011
Ubicación: Ibagué, Tolima
Mensajes: 192
Antigüedad: 13 años, 2 meses
Puntos: 37
Respuesta: cambiar value de un input una vez cargado el DOM

Ahora también pasó lo que me había imaginado, tal vez en IE7 e IE8, si funciona, pero el cambio visual no se ejecuta, solo se ejecuta en otros exploradores, tal vez solo se realiza el cambio en el fondo, nada más, te lo puedo asegurar por que me dió por ejecutar el código modificado, oprimir el botón y mira lo que salió, inténtalo tu también para que te des cuenta, hazlo en tu código a ver si sucede lo mismo.

te dejo la captura que saqué para que veas el resultado



Ten presente que Internet Explorer siempre va a mostrar comportamientos raros o nisiquiera los va a dejar ver.

Exitos
  #8 (permalink)  
Antiguo 01/12/2011, 03:55
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 4 meses
Puntos: 8
Respuesta: cambiar value de un input una vez cargado el DOM

Cita:
Iniciado por Raziel_Ravenheart Ver Mensaje
Ahora también pasó lo que me había imaginado, tal vez en IE7 e IE8, si funciona, pero el cambio visual no se ejecuta

Ten presente que Internet Explorer siempre va a mostrar comportamientos raros o nisiquiera los va a dejar ver.

Exitos
Gracias a ambos por la ayuda, pero el cambiar DefaulValue por value ya lo había hecho a primeras y no funcionaba. Tendré que resignarme o utilizar Jquery. La verdad que programo en PHP y Javascript nunca me ha gustado demasiado; pero para algunas cosas como esta es necesario. Y digo que nunca me ha gustado porque al ser un lenguage del lado del cliente, estas muy limitado en función de lo que el cliente este utilizando (IE,Mozilla etc etc..), y es imposible saber que usan.
Con Jquery (esto no sucede o sucede menos), pero para algo tan simple como cambiar el value de un campo no quería cargar las librerías de Jquery , pero es lo que hay (:.

Se que se puede utilizar PHP lógicamente , haciendo uso del método GET, pero estoy utilizando librerías que he trabajado poco, cuya modificación no es nada sencilla, por ello quería hacerlo del lado del cliente.
Mil gracias
__________________
Videotutoriales de Drupal
  #9 (permalink)  
Antiguo 01/12/2011, 10:02
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: cambiar value de un input una vez cargado el DOM

entonces el problema debe ser lo que @raziel cita en la primera repuesta acerca del método getElementsByTagName y las peculiaridades de algunos navegadores. mientras tanto, lo único que podemos hacer es adivinar en base al código que has mostrado. mi recomendación es que muestres algo más completo. preferiblemente una url en caso de que tengas código de lado servidor.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #10 (permalink)  
Antiguo 01/12/2011, 11:16
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 4 meses
Puntos: 8
Respuesta: cambiar value de un input una vez cargado el DOM

Cita:
Iniciado por zerokilled Ver Mensaje
entonces el problema debe ser lo que @raziel cita en la primera repuesta acerca del método getElementsByTagName y las peculiaridades de algunos navegadores. mientras tanto, lo único que podemos hacer es adivinar en base al código que has mostrado. mi recomendación es que muestres algo más completo. preferiblemente una url en caso de que tengas código de lado servidor.
El código es ese , no hay más , simplemente una url cualquiera te sirve para entenderlo, loquesea/index.php?var=90, ademas esa parte la tengo controlada y funciona perfectamente. Por cierto getElementsByTagName no tienen nada que ver ,ese método de Javascript es para referirse a los elementos del DOM , es decir un Tag name es INPUT O SELECT o TITLE, pero no se refiere al atributo "name" que puedan tener estos, para eso está el otro método getElementsByName.

Un saludo
__________________
Videotutoriales de Drupal
  #11 (permalink)  
Antiguo 01/12/2011, 11:26
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: cambiar value de un input una vez cargado el DOM

Cita:
El código es ese , no hay más , simplemente una url cualquiera te sirve para entenderlo, loquesea/index.php?var=90, ademas esa parte la tengo controlada y funciona perfectamente.
me refiero a la parte html. en particular, ¿tienes más de un elemento que comparte el mismo valor en el atributo name y id? por eso decia que evaluaras la cita de @raziel.

Cita:
Por cierto getElementsByTagName no tienen nada que ver
tienes toda la razon! fue una confunsión momentanea. quizas fue que llevo leyendo varios temas seguidos donde parte de la solución es con dicho método y ahora se me grabo mentalmente el maldito nombre.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #12 (permalink)  
Antiguo 01/12/2011, 12:36
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 4 meses
Puntos: 8
Respuesta: cambiar value de un input una vez cargado el DOM

Cita:
Iniciado por zerokilled Ver Mensaje
me refiero a la parte html. en particular, ¿tienes más de un elemento que comparte el mismo valor en el atributo name y id?
:
No, solo tengo un elemento con el atributo name que tiene ese valor. Los name y los ids que yo sepa deben de ser únicos en el DOM.
__________________
Videotutoriales de Drupal
  #13 (permalink)  
Antiguo 01/12/2011, 13:05
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: cambiar value de un input una vez cargado el DOM

Cita:
Los name y los ids que yo sepa deben de ser únicos en el DOM.
los valores de los names pueden repetirse, incluso entre distintos tipos de elementos. lo que deben ser únicos son los IDs. sin embargo, comunmente he visto la práctica donde el mismo valor asignado al ID se lo asignan a NAME. por ejemplo,
Código:
<p id="IDed"><input name="IDed"></p>
más allá de si esta bien o mal, el asunto es que getElementsByName funciona un tanto distinto en iexplorer. cuando se interpreta getElementsByName("IDed"), el método captura tanto el elemento INPUT como P, aunque este último no tiene NAME. esa era la parte que queria que revisaras. si no es tu caso, entonces hay otra cosa que esta afectando. mi consejo, revisa la consola de error de iexplorer.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #14 (permalink)  
Antiguo 01/12/2011, 13:35
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 4 meses
Puntos: 8
Respuesta: cambiar value de un input una vez cargado el DOM

Cita:
Iniciado por zerokilled Ver Mensaje
revisa la consola de error de iexplorer.
Bueno , la verdad que Iexplorer no es que de un error muy exacto que digamos, nunca suele coincidir ni las líneas ni nada.
Un saludo
__________________
Videotutoriales de Drupal
  #15 (permalink)  
Antiguo 01/12/2011, 17:01
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: cambiar value de un input una vez cargado el DOM

no comprendo la naturaleza de porqué cambiar el valor a traves de defaultValue. defaultValue y value son dos memorias distintas con propósitos distintos. el primero debería representar el valor por defecto que refleja el atributo value a nivel DOM, mientras que la propiedad value refleja el contenido actual del campo. fíjate que son dos cosas distintas. defaultValue se utiliza para cambiar el valor original del campo. de modo que al reiniciar un formulario -botón tipo reset-, el navegador restaura el campo al nuevo valor. por tanto, todo depende de tu objetivo: si quieres cambiar el valor actual del campo usa la propiedad value; si quieres cambiar el valor defacto utiliza defaultValue.

si me preguntarás por qué algunos navegadores reflejan el cambio cuando se altera defaultValue y otros no. mi opinión sería... en lugar de contestarte el porqué, te respondería cual creo que es el método correcto. pienso que el correcto es cuando el cambio sucede, pero en realidad tiene un proceso más elaborado. el cambio se dá porque en ese instante el campo en si no ha sido alterado por ningún proceso humano o programado. en esa circunstancia, si por alguna razón, alguna programación cambia el valor defacto y no se viera reflejado, entonces se necesita interación humana para reestablecer el campo. no es conveniente porque puede suceder que el usuario haya modificado el estado de otros campos y al pulsar el botón reset perdería todo. en la situación de que no ocurre un reflejo al alterar defaultValue debería ser cuando el campo ha sido modificado, ya sea por interacción humana o programada.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #16 (permalink)  
Antiguo 02/12/2011, 03:54
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 4 meses
Puntos: 8
Respuesta: cambiar value de un input una vez cargado el DOM

Gracias a tod@s por la ayuda, he cambiado :
campo[0].defaultValue = "www."+domain;
por campo[0].value = "www."+domain;

Y ya funciona perfectamente en ambos navegadores. Esto ya lo había hecho antes, pero seguramente tenía algún error gramatical (o algo por el estilo) que no me funcionaba).

Mil gracias
__________________
Videotutoriales de Drupal

Etiquetas: cargado, dom, formulario, funcion, input, vez
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:29.