2010-10-26 17 views
10

¿Cómo puedo hacer una etiqueta en IE7 para enviar el formulario, mientras hago toda la validación del formulario que está configurada en el formulario?IE7 - <button> no envía el formulario

si acabo de hacer un document.forms[0].submit(); se envía, pero ignora la validación del formulario.

Editar: Todo el mundo le gusta que me dice que use la etiqueta de entrada ... que siga los pasos de la forma, pero no trabajará en mi situación y por eso le pregunté por la etiqueta de botón ...

<form action="my/script" onsubmit="return ValidateFunc();"> 
<button> <img src="image/do_this_with_input_tag.png"> Some Text </button> 
</form> 
+0

¿Está utilizando un '

+0

No, no envía. – Justin808

+0

@Nick Craver: si mi memoria me sirve correctamente, ese es el tipo predeterminado en IE, pero no en los otros navegadores. – some

Respuesta

1

Utilicé jquery para enviar el botón. Si utilizo Javascript directamente, si omite la configuración de validación. El formulario enviado por Jquery ejecuta la validación antes de enviarlo.

Después de una investigación adicional, la etiqueta, incluso con un tipo = "enviar" no puede enviar un formulario en la versión anterior de IE.

+3

He probado type = "submit" en ie7, parece enviar el formulario bien para mí. – Geekfish

1

Supongo que la Validación solo reconoce un evento "enviar" desde un botón "enviar".

Debe utilizar una entrada "enviar" en lugar de una entrada de "botón". Entonces el mecanismo de validación podrá interceptar el evento de envío. puede llamar a form.submit dentro de la función validation.submit.

Aquí está el código:

<form id="theForm"> 
    ... 
    <input type="submit" value="submitMe"/> 
</form> 

en Javascript:

$('#theForm').validate({ 
    ... 
    submitHandler: function() { 
     // do some trick here 
     ... 
     // submit the form 
     $('#theForm').submit(); 
    } 
}); 
9

En primer lugar tiene un botón con el tipo presentara lo

<input type="submit" value="submit" /> 

En su etiqueta de formulario, incluya la onsubmit() evento como

<form 
    action="/path/to/server/side/script" 
    name="testform" 
    onsubmit="return validate()" 
    > 

La función validate() debe devolver true si se realiza la validación del formulario o false si falla la validación. p.

function validate(){ 
    if(...){//valid 
     return true;  
    }else{//not valid 
     return false; 
    }  
} 

EDIT: Siempre especifique el tipo de botón. Si no se especifica, en IE se predetermina a "botón" mientras que en Chrome y Firefox se predetermina a "enviar".

<form action="my/script" onsubmit="return ValidateFunc();"> 
<button type="submit"> <img src="image/do_this_with_input_tag.png"> Some Text </button> 
</form> 

Y en el futuro, se incluyen más detalles en su pregunta si quieres respuestas adecuadas.

+0

Esto es exactamente cómo funcionan las cosas, con la etiqueta INPUT, no tanto con la etiqueta BUTTON. – Justin808

+0

He editado la respuesta, compruébalo –

+0

Volveré a probar el atributo type = "submit" una vez que regrese a la oficina. – Justin808

0

estoy usando (maniquí/no visible) campo de entrada en el interior de forma posicionado absoluto con este css:

<input class="dummy" type="submit" /> 

.dummy { 
    position:absolute; 
    bottom:0px; 
    right:0px; 
    padding:0px; 
    margin:0px; 
    border:0px; 
    font-size:0px; 
    line-height:0px; 
} 

Sólo evitar usando display: none o la visibilidad: oculto o anchura: 0px etc. Utilice sólo esto css que he proporcionado.

2

Lo resolví simplemente agregando type="submit" al botón.

<button>Submit</button> no se estaba enviando en IE7.

<button type="submit">Submit</button> se presenta en IE7.

0

tuve el mismo problema con IE11 con un botón de envío dentro de otra forma:

<form id="form1"> 
    ... 
</form> 
<form id="form2"> 
    ... 
    <button type="submit" form="form1">OLA KE ASE</button> 
    ... 
</form> 

Puede resolverlo usign Javascript, lo hice con jQuery en una forma genérica.

$(document).ready(function() { 
    $('button[type=submit]').on('click', function() { 
     if ($(this).attr('form') != '') { 
      document.getElementById($(this).attr('form')).submit(); 
     } 
    }); 
}); 
Cuestiones relacionadas