2011-05-23 28 views
19

no abrir Tengo un botón de enviar con un onClick:window.location() no funciona, página

<div id="messageDiv"> 
<form> 
<textarea name="message" rows="10" cols="20"></textarea></textarea> 
<br /><br /> 
<input type="submit" value="Send" onClick="sendmail()"> 
<input type="reset" value="Reset" name='reset'> 
</form> 
</div> 

entonces tengo mi sendmail:

function sendmail() 
    { 
     window.location.href = "http://www.rainbowcode.net/index.php/profiles/mail?="+mailid; 
     window.location('http://www.rainbowcode.net/index.php/profiles/mail?='+mailid); 
     //return true; 
    } 

mailid es una variable global que se establecer en otra función JS y contiene el valor correcto. ¿Cómo es que window.location no abre mi página?

Si abro manualmente con un mailid funciona bien ..

+0

¿por qué está configurando location.href y llamando a la ubicación como una función? – Nathan

+0

no entiendo? –

+0

No 'window.location = 'http: //stackoverflow.com/';' work ..? – Marty

Respuesta

49

Establecer la ubicación funciona bien, pero luego se envía el formulario, que recargará la página actual en su lugar.

Volver falsa del método:

function sendmail() { 
    window.location.href = "http://www.rainbowcode.net/index.php/profiles/mail?="+mailid; 
    return false; 
} 

y devolver esa condición en el evento para detener los PRESENTAR:

<input type="submit" value="Send" onclick="return sendmail()"> 
+1

¡gracias! ¿Cuál es la diferencia entre return true y return false? –

+1

@Helloise Smit: si devuelve falso, se detendrá la acción predeterminada del evento, es decir, al hacer clic en el botón. La devolución verdadera (o nada) permitirá el clic, que enviará el formulario. – Guffa

+0

gracias ... todo está bien, solo una cosa más, por favor: tengo un área de texto con el envío donde un usuario puede escribir un mensaje y hacer clic en enviar, que luego llamará a mi ventana.location.href ... ¿Cómo puedo pasar? en el mensaje a la nueva ventana? mi formulario es una "publicación" y la identificación de textarea es "mensaje"? gracias –

3

Si es necesario abrir una nueva ventana, se debe utilizar el método window.open(). window.location se refiere a la dirección actual de Windows, y solo - al usar window.location.reload() - vuelva a cargar la ventana ACTUAL.

+0

gracias window.open funciona, se abre una nueva ventana, pero quiero poder hacer clic en la flecha hacia atrás y volver a la página anterior, por favor –

0

respuestas sólidas ya, pero ¿por qué luchar contra el sistema? En particular, si usted ha llamado con jQuery o onClick - Puede que no haya un retorno en línea es mi punto - así que en vez usted podría cambiar la acción de la submit:

document.form.action = 'http://www.rainbowcode.net/index.php'

entonces usted puede escoger cualquiera de los Forme variables si las necesita o ignore si no las necesita.

Cuestiones relacionadas