javascript forms internet-explorer-8 internet-explorer-7 onsubmit

javascript - onsubmit="return false" no tiene ningún efecto en Internet Explorer 7/8(el formulario aún se envía)



forms internet-explorer-8 (14)

Tengo un formulario que se enviará por código JavaScript activado en "onsubmit" de la etiqueta. Funciona bien en todos los navegadores, pero no en IE7 / IE8.

¿Que puedo hacer?

<form action="/dosomething.htm" method="GET" onsubmit="submitmyform();return false"> [...] <input type="submit" value="Go"> </form>


Creo que el problema es a cambio falso. Necesitas devolverlo desde tu función '''' onsubmit ''''.

ver ejemplo.

Este formulario nunca será enviado en IE 7/8 también.

<form action="acknowledgement.html" method="get" onsubmit="verify();"> <input type="submit" name="submit" VALUE="Submit"> </form> <script language="javscript"> function verify(){ return false; } </script>

Danny.


De hecho, como escribe submitmyform();return false only se evalúa submitmyform .

En el caso de dos comandos, deberás ponerlos entre llaves como esta

{submitmyform();return false;}

para que ambos sean evaluados


Funciona - compruebe el ejemplo de W3Scools (tomado de) http://www.w3schools.com/js/js_form_validation.asp

<html> <head> <script type="text/javascript"> function validate_required(field,alerttxt) { with (field) { if (value==null||value=="") { alert(alerttxt);return false; } else { return true; } } } function validate_form(thisform) { with (thisform) { if (validate_required(email,"Email must be filled out!")==false) {email.focus();return false;} } } </script> </head> <body> <form action="submit.htm" onsubmit="return validate_form(this)" method="post"> Email: <input type="text" name="email" size="30"> <input type="submit" value="Submit"> </form> </body> </html>


La solución para nosotros fue mover el evento javascript de "onsubmit" del formulario a "onclick" del botón enviar.

<form action="/dosomething.htm" method="GET"> [...] <input type="submit" value="Go" onclick="submitmyform();return false"> </form>


No creo que se haya llegado a tu devolución falsa, ya que se trata de lo que devuelve tu función.

<form action="/dosomething.htm" method="GET" onsubmit="submitmyform();return false">

Asegúrese de que devuelve falso dentro de su función ''submitmyform ()'', de lo contrario, si no es así, podría estar devolviéndole verdadero evento de obstrucción de formulario.


Para cancelar un evento en IE heredado, debe establecer returnValue en false . Simplemente devolver false no lo hará. No sé por qué Microsoft lo implementó de esta manera.

function validateForm(evt) { // if form is not valid if(!condition) { // if evt has preventDefault if(evt.preventDefault) { event.preventDefault(); } // if evt has returnValue else if(evt.returnValue) { evt.returnValue = false; } // fallback else { return false; } } } // assume form is reference to your form form.attachEvent(''onsubmit'',validateForm);


Si quiere que IE sea compatible con los estándares, tendrá que decirle qué estándar debe cumplir en una declaración.

Sin uno, será una frustración sin fin hacer que haga lo que quiere. Con uno, la mayor parte de la frustración desaparece porque comienza a funcionar como cualquier otro navegador.


Tuve el mismo error y cuando encendí la consola, nunca llegó. Así que me di cuenta, era la consola, que el explorador de internet no conocía, siempre que estuviera apagado. Simplemente agregue una consola ficticia a la ventana con el siguiente código (si ya no hay uno):

var myconsole = {log : function(param){}} window.console = window.console || myconsole;

Con esto, podrías tener problemas si quieres tener la consola microsoft javascript. Luego solo comenta las líneas. Pero ahora, el objeto de la consola ya no está indefinido en todo el sitio.


Varias ideas propuestas aquí funcionan (porque usan diferentes formas de escribir el código correcto), pero hay una respuesta mucho más sencilla

OP escribió:

onsubmit="submitmyform();"

en lugar de :

onsubmit="return submitmyform();"

Eso es.


Voy a criticar esto. Si desea gestionar envíos de formularios, para eso se envía. Si el usuario acierta ingresa en uno de sus campos, su manejador onclick será totalmente evitado. Aquí hay un ejemplo básico de hacer esto de una manera no molesta.

<form name="myform"> <input type="submit" /> </form> <script> document.myform.onsubmit = function(){ alert(''handled''); return false; } </script>

Esto se puede hacer mucho más simple con jQuery, la misma forma ...

$("form[name=myform]").bind(''submit'',function(){ alert(''handled''); return false; });


prueba esto. trabaja para mi.

onSubmit = "javascript: return false"


document.forms.userFormRegisterr.onsubmit = function(e){ return false; };


<form action="/dosomething.htm" method="GET" onsubmit="return submitmyform(this)"> [...] <input type="submit" value="Go"> </form>

esto funciona bien ... la función debe devolver verdadero o falso


<script type="text/javascript"> <!-- function submitHandler() { alert(0); return false; } window.onload=function(){document.getElementById("formid").attachEvent("onsubmit", submitHandler);} --> </script> <form action="/dosomething.htm" method="GET" id="formid"> [...] <input type="submit" value="Go"> </form>

El método de evento adjunto solo funciona solo para IE7 / 8. Si desea una solución confiable de navegador cruzado, debe usar addEventListener como alternativa.

Espero eso ayude