2011-05-24 23 views
11

Así que tengo un formulario, y onsubmit="return reg_check(this)" donde reg_check() es una función javascript en el encabezado que se supone que verifica los datos del formulario, y ya que una de sus tareas es verificar si el nombre de usuario está en la base de datos que requiere php, quiero redireccionar a una página php que hace esta tarea.window.location.href no funciona en el formulario onsubmit

El problema es: window.location.href no funciona! Aquí está la función (versión reducida) y por supuesto el main.php es sólo una página al azar que me dieron:

function reg_check(myForm) { 
    alert("before redirect.."); 
    window.location.href = "http://localhost/main.php?width=" + screen.width + "&height=" + screen.height; 
    alert("after redirect.."); 
} 

Los before redirect y after redirect alertas funcionan, simplemente no redirigir? Permanece en la misma página.

También, si lo intentara volver a dirigir desde el cuerpo con solo teclear:

<script type="text/javascript"> 
    alert("before redirect.."); 
    window.location.href = "http://localhost/main.php?width=" + screen.width + "&height=" + screen.height; 
    alert("after redirect.."); 
</script> 

redirecciona.

Alguna idea de cómo podría hacer que esto funcione?

Respuesta

35

Necesitas return false; de su función reg_check y luego en su onsubmit, cambiarlo a:

onsubmit="return reg_check(this);" 

Esto cancelará el envío del formulario. Y si desea dejar que el formulario se envíe de forma normal, simplemente devuelva true desde reg_check.

Editar (para ser más clara es necesario agregar return false; de ​​su función):

function reg_check(myForm) { 
    alert("before redirect.."); 
    window.location.href = "http://localhost/main.php?width=" + screen.width + "&height=" + screen.height; 
    return false; 
} 
+1

hmm gracias por la punta, pero todavía no se ha solucionado – Noura

+0

@Nara didn lo siento No digas eso correctamente, he actualizado la respuesta y deberías estar bien ahora. – Craig

+0

ah entonces nada nuevo. eso es lo que ya estaba usando – Noura

2

que he visto problemas en IE donde he tenido que hacer lo siguiente:

window.location.assign(url); 

Específicamente dentro de un manejador de éxito jQuery AJAX. Realmente no puedo especular por qué, excepto para mí, funcionó.

En realidad lo hice

window.location.replace(url) 

que sustituye la página actual en la historia. Buen truco eso!

-1

[RESUELTO] Tuve un problema similar al redireccionar a alguna otra URL del script del cliente. Se implementó la función window.open en su lugar y funcionó. Puede tener, por ejemplo, una función llamada ChangeCity() para su evento de control html que se llama con el evento onchange.

function ChangeCity() { 
    switch ($("#currentCity").val()) { 
     case "NY": 
       var url = '@Url.Action("New York City", "Home", new { @area = "" },Request.Url.Scheme)'; 
      window.location.href = url; 
      window.open(url,"_top"); 
      return false; 

/* cases otras ciudades */

} 

Es posible que quiera explorar detalles sobre window.location.href redirection -Alternative Solution

+0

Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. - [De la crítica] (/ reseña/mensajes de baja calidad/17351719) –

Cuestiones relacionadas