2010-10-13 21 views
6

Tengo un problema con el acceso a mi formulario por su nombre. Cuando uso document.form [0] .mylink.value, reconoce el valor y las salidas al innerHTML que especifico. Sin embargo, cuando uso document.myform.mylink.value, no parece reconocer el formulario. He intentado esto en Chrome 6.0 y también en Firefox 3.6.3 y obtuve el mismo resultado en ambos. Realmente necesito poder acceder a mis valores de formulario usando el nombre del formulario (en lugar de document.form [0]), ¿alguna idea de por qué document.myform.mylink.value no funciona?no se puede obtener elementos de formulario mediante el uso de nombre de formulario en javascript

<form name="myform"> 
<table> 
<tr><td valign="middle" align="center"> 
    <div id="textResponse"></div> 
</td></tr> 
<tr><td height="30" valign="middle" align="center"> 
    <input name="mylink" value="Enter a URL" size="31" /> 
</td></tr> 
<tr><td valign="top" align="center"> 
    <a href="javascript:submitForm2();">Click</a> 
</td></tr> 
</table> 
</form> 

<script type="text/javascript"> 
function submitForm2(){ 
    //This one does NOT work: 
    my_link = document.myform.mylink.value; 
    //This one also does NOT work: 
    //my_link = document.forms['myform'].mylink.value; 
    //This one works: 
    //my_link = document.forms[0].mylink.value; 

    document.getElementById("textResponse").innerHTML="<p>"+my_link+"</p>"; 
} 
</script> 
+1

El código no es ciertamente XHTML (Transición) válida. 'action' es un atributo obligatorio para los elementos' form'. Al menos debería establecerse, incluso si está vacío. – Lekensteyn

+0

llegué un poco tarde, pero la razón por la que no funciona podría deberse a que le falta el atributo "tipo". Sé por defecto que es texto, aunque no estoy seguro de si es realmente obligatorio. –

Respuesta

18

Técnicamente lo que tiene debería funcionar bien ... la sintaxis completa a continuación también debería funcionar:

var my_link = document.forms['myform'].elements['mylink'].value; 

Si por casualidad la variable en el código "real" es "mylink"no"my_link" se Obtendrá fallas en IE, ya que hará referencia automática al elemento del formulario, no al valor que está tratando de extraer.

Dicho todo esto, el código tal como fue anunciado ... funciona bien en Firefox/IE (demo aquí: http://jsfiddle.net/Ymg8W/)

Cuestiones relacionadas