2010-08-02 22 views
45

Quiero un formulario html para no hacer nada después de que se haya enviado.¿Quieres formulario html enviar para no hacer nada

action="" 

no es bueno porque hace que la página se vuelva a cargar.

Básicamente quiero que se llame a una función ajax cada vez que se presiona un botón o alguien pulsa "enter" después de tipearlo. Sí, podría soltar la etiqueta del formulario y agregar solo invocar la función desde el evento onclick del botón, pero también quiero la funcionalidad de "ingresar" sin obtener todos los hackers.

+2

"también quiero el "oprimir la tecla Enter" funcionalidad sin obtener todos los hackish ". Creo que el barco ha navegado después de haber decidido tener un formulario con action = "". ¿por qué no simplemente cablear controladores para eventos onclick y eventos de pulsación de tecla? – RPM1984

Respuesta

63

Al usar return false; en el javascript al que llama desde el botón de envío, puede detener el envío del formulario.

Básicamente, es necesario el código HTML siguiente:

<form onsubmit="myFunction(); return false;"> 
<input type="submit" value="Submit"> 
</form> 

Entonces el Javascript de soporte:

<script language="javascript"><!-- 
function myFunction() { 
    //do stuff 
} 
//--></script> 

Si lo desea, también puede tener ciertas condiciones permiten que la secuencia de comandos para enviar el formulario:

<form onSubmit="return myFunction();"> 
<input type="submit" value="Submit"> 
</form> 

Emparedado con:

<script language="JavaScript"><!-- 
function myFunction() { 
    //do stuff 
    if (condition) 
     return true; 

    return false;  
} 
//--></script> 
+3

Falta la palabra clave 'function':' function myFunction() {} ' –

0

Como parte del evento onclick del botón devuelve falso, lo que impedirá que se envíe el formulario.

es decir:

function doFormStuff() { 
    // ajax function body here 
    return false; 
} 

Y justo llamar a esa función en el botón de envío clic. Hay muchas maneras diferentes.

2

¿Qué tal

<form id="my_form" onsubmit="the_ajax_call_function(); return false;"> 
...... 
</form> 
-1

usar jQuery. Tal vez ponga un div alrededor de sus elementos de la forma. A continuación, utilice preventDefault() y luego haga su ajax llama

2

Usted puede utilizar el siguiente código HTML

<form onSubmit="myFunction(); return false;"> 
    <input type="submit" value="Submit"> 
</form> 
7

También funciona:

<form id='my_form' action="javascript:myFunction(); return false;"> 
+2

Aunque eso no hace nada, la consola dice' Uncaught SyntaxError: Illegal return statement'. – alej27

-1
<form action='javascript:functionWithAjax("search");'> 
    <input class="keyword" id="keyword" name="keyword" placeholder="input your keywords" type="search"> 
    <i class="iconfont icon-icon" onclick="functionWithAjax("search");"></i> 
</form> 

<script type="text/javascript"> 
function functionWithAjax(type) { 
    // ajax action 

    return false; 
} 
</script> 
+0

Realmente deberías explicar el código un poco. Convertirá una buena respuesta en una excelente. – Neil

Cuestiones relacionadas