Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: SrTrp en 24 Septiembre 2017, 04:13 am



Título: Error en document.forms['1'].submit();
Publicado por: SrTrp en 24 Septiembre 2017, 04:13 am
Se supone que debe ejecutar el form de id 1 pero no, dice que no es una función el document.forms.1.submit .
Código
  1.   <img width="100" height="100" onclick="document.forms['1'].submit();" src="/imgs/web/Cp.png"/>
  2.  


Título: Re: Error en document.forms['1'].submit();
Publicado por: **Aincrad** en 24 Septiembre 2017, 04:34 am
Aquí tienes, mas fácil imposible.

HTML:
Código
  1. <html>
  2. <head>
  3. /////////////////////////////////////////////////////////
  4. //tu formulario. By **Aincrad6**
  5. /////////////////////////////////////////////////////////
  6. <form id="formu" style="display: none;">
  7. ...
  8. .....
  9. ......
  10. </form>
  11. /////////////////////////////////////////////////////////
  12. //el js para mostrar el formulario
  13. /////////////////////////////////////////////////////////
  14. <script language="text/javascript">
  15. function mostrar(){
  16. var formulario = document.getElementById('formu');
  17. formulario.style.display = block;
  18. }
  19. </script>
  20. /////////////////////////////////////////////////////////
  21. //el boton
  22. /////////////////////////////////////////////////////////
  23. </head>
  24. <input type="button" onclick="mostrar();" />
  25. </html>

                                              Comenta si te sirvio


Título: Re: Error en document.forms['1'].submit();
Publicado por: SrTrp en 24 Septiembre 2017, 04:48 am
Sigue sin funcionar, trate de poner mi ejecucion en la función pero no..


Título: Re: Error en document.forms['1'].submit();
Publicado por: **Aincrad** en 24 Septiembre 2017, 04:59 am
Sigue sin funcionar, trate de poner mi ejecucion en la función pero no..

Prueba el la parte del js:

Código
  1. <script language="text/javascript">
  2. function mostrar (idFormulario){
  3.        document.forms[idFormulario].submit();
  4. }
  5. </script>
  6.  

                                               Comenta


Título: Re: Error en document.forms['1'].submit();
Publicado por: SrTrp en 24 Septiembre 2017, 16:48 pm
Ahora me dice que no esta definida :S.
 Uncaught ReferenceError: mostrar is not defined
    at HTMLImageElement.onclick


Título: Re: Error en document.forms['1'].submit();
Publicado por: SrTrp en 24 Septiembre 2017, 17:10 pm
Ya lo solucione, tenia que quitar lo botenes submit de los formularios ya que con ellos lo detectaba como una función.


Título: Re: Error en document.forms['1'].submit();
Publicado por: #!drvy en 24 Septiembre 2017, 17:14 pm
el document.forms representa una colección de elementos (objeto) representado por un index (numero asociativo). No puedes pedirle un ID de forma directa ya que no lo reconocería. En cambio, si puede reconocer un nombre y como he mencionado, un index.

Por otro lado, muchos se siguen rigiendo por la regla establecida en HTML4 en la que se dicta que un ID no puede empezar por un numero (debe empezar forzosamente por una letra [a-z]). A pesar de que HTML5 lo permite, tanto javascript como CSS pueden tener dificultades interpretandolo.

Puedes hacerlo de múltiples maneras:

Código
  1. <form id='prueba' name='hola' action='https://yahoo.com'></form>
  2.  
  3. <form id='test' name='adios' action='https://google.com'></form>

Supongamos que tenemos esos dos formularios en todo el documento. Para activar el primero, usaria el index 0 y para activar el segundo activaria el index 1. 0, 1, 2, 3....


Código
  1. <!-- Esto activa el formulario con ID test que es el numero 2 (1) en el documento. -->
  2. <img width="100" height="100" onclick="document.forms[1].submit();" src="/imgs/web/Cp.png"/>


También puedes activarlos por nombre (el atributo name en el formulario)
Código
  1. <!-- Esto activa el formulario con nombre adios y ID test -->
  2. <img width="100" height="100" onclick="document.forms['adios'].submit();" src="/imgs/web/Cp.png"/>

Recuerda, NUMERO ASOCIATIVO Y NOMBRE, NO ID.

Siendo tal, para activarlo por ID
Código
  1. <!-- Esto activa el formulario con ID test -->
  2. <img width="100" height="100" onclick="document.getElementById('test').submit()" src="/imgs/web/Cp.png"/>



Yo lo haría de la siguiente forma, puesto que es mucho más limpio, separas el código JS del HTML y evitas futuros dolores de cabeza.

Código
  1. <form id="formulario1" action="https://google.com"></form>
  2. <img id='enviarFormulario' width="100" height="100" src="/imgs/web/Cp.png"/>
  3.  
  4.  
  5. <script type='text/javascript'>
  6.    document.getElementById('enviarFormulario').addEventListener('click', function(){
  7.        document.getElementById('formulario1').submit();
  8.    });


https://developer.mozilla.org/es/docs/Web/API/EventTarget/addEventListener
https://developer.mozilla.org/es/docs/Web/API/Document/getElementById

Saludos