2010-09-06 20 views
5

Lo siguiente funciona bien en Firefox y Chrome, pero IE 8 no llamará al método submit() cuando se hace clic en el enlace de anclaje.onclick evento en la etiqueta de anclaje no funciona en IE

<a href="javascript:void(0);" onclick="submit();">Sign In</a> 

El método de envío se define en la misma página de la siguiente manera:

<head> 
<script type="text/javascript"> 

function submit() 
{ 
// other code            
document.forms[0].submit(); 
} 

</script> 
</head> 
+0

¿Has probado onclick = "javascript: submit();" ? – Neutralizer

+1

@Umair: no es necesario el prefijo 'javascript:' en 'onclick' o atributos similares del controlador de eventos. Este no es el 'href'. –

+0

una vez que funcionó para mí, así que supongo que es – Neutralizer

Respuesta

7

¿Puede dar un poco más de contexto? ¿Cómo y dónde se define la función submit? Con solo lo anterior, debería funcionar, excepto:

También es probable que desee return false; allí para cancelar la acción predeterminada. Ej .:

<a href="javascript:void(0);" onclick="submit();return false;">Sign In</a> 

Puede ser que la acción predeterminada está pasando inmediatamente después de la submit e interfiriendo con ella.

Editar: Solo para ataques y risitas, intente usar un nombre diferente para su función submit. IE tiene problemas de espacio de nombres. Si tienes algo con el atributo id o name establecido en "enviar", por ejemplo, que podría ser un problema ...

+0

Intenté agregar "return false;" sin efecto El depurador de IE muestra la llamada al código onclick, pero no ingresará el método submit(). – Mark

+0

@Mark: no estoy seguro de saber qué quiere decir con que el depurador lo muestra ingresando el código 'onclick' pero no ingresando el método' submit'. ¿Hay una excepción lanzada? De lo contrario, ¿qué ocurre para que "no" ingrese a la función? –

+0

Gracias por responder T.J. Es realmente extraño. Configuré el depurador de IE 8 para "interrumpirlo todo". En cuanto hago clic en el enlace "Iniciar sesión", el depurador se rompe y se resalta onclick = "submit();" en el ancla. Supongo que el resaltado es para indicar la próxima instrucción que se ejecutará. Para estar seguro, también establecí un punto de interrupción dentro del método de envío. Desde este punto, hago clic en "Paso a paso" o "Paso sobre" en el menú del depurador. Ambos tienen el mismo efecto de resaltar el método de vacío (0). Por alguna razón, IE no ejecutará la función submit(). No veo ninguna indicación de un error. – Mark

0

Intente utilizar

<a onclick="submit();">Sign In</a> 

o

<a href="javascript:submit();">Sign In</a> 
0

si necesita ingresar el valor de la función javascript, asegúrese de que utiliza la cita única en lugar de la doble.

Por ejemplo:

<a href="#" onclick="your_function('input');">Sign In</a> 
1

Para otros que han encontrado este problema, más recientemente, para mí fue debido a la IE 11 utilizando el modo de compatibilidad en el sitio. Se vio que estaba en el mismo dominio, asumí que el sitio era un sitio de intranet y automáticamente cambié al modo de compatibilidad, lo que rompió parte del Javascript (y causó algunos otros problemas de visualización inesperados).

Puede desactivar esta 'función' haciendo clic en el engranaje de configuración y seleccionando "Configuración de vista de compatibilidad". Hay una casilla de verificación que se configuró llamada "Mostrar sitios de intranet en la Vista de compatibilidad".

Cuestiones relacionadas