2011-12-26 15 views
5

presentare Ho un pulsante di invio come questo:convalida sul pulsante

<input class="create_button" name="commit" 
     onclick="return validate_activity();" 
     type="submit" value="Save"> 

ho scoperto che questo pulsante sarà sempre invia una richiesta al server qualunque sia la validate_activity() Restituisce vero o falso?

Qual è il problema qui?

UPDATE

In realtà, ho fatto un errore nel mio validate_activity(), mi fa pensare è tornato falso, ma non lo.

+1

Puoi pubblicare quello che hai su 'validate_activity()'? –

+0

Giusto, ho fatto un errore nel mio validate_activity(). – Rocky

risposta

10

provare a fare lo stesso senza ritorno, ad es. onclick="validate_activity();" e verificare se la funzione restituisce false in caso di invalidità

+1

Funzionerà anche su un invio

+0

Ciò non impedirà a nessuno di inviare il modulo, ad es. premendo Invio su un campo di input nella stessa forma. – cyanbeam

1

Si consiglia di utilizzare l'evento submit del modulo per la convalida ..

<form action="..." method="..." onsubmit="return validate_activity()"> 
    <...> 
    <input class="create_button" name="commit" type="submit" value="Save" /> 
    <...> 
</form> 
2

Credo che il problema è onclick="return validate_activity();", questa istruzione return viene eseguito quando si fa clic il pulsante di invio (non restituito falso). Il modo corretto è onclick="validate_activity();" e restituisce false nella funzione validata_activity, che interromperà l'azione di invio predefinita.

3
<input type="button" name="commit" 
value="Save" 
onclick="validate_activity(myform)" /> 

All'interno del Javascript, quando convalidato, fare form.submit() oppure restituire false.

Spero che questo aiuti! Questo convaliderà il tuo modulo e lo invierà. Questo invio fallirà se Javascript è disabilitato nel tuo browser.

se si desidera che il submit di procedere anche se il JavaScript è disabilitato nel browser client (significa che non convalida, ma si presenterà), quindi

<input type="button" name="commit" 
value="Save" 
onclick="validate_activity(myform);return false;" /> 

Spero che nessuno convalida non dovrebbe colpire affatto. Ma poi javascript è solo lato client e spero che abbiate seri controlli di integrità sul lato server e di molti, penso che le persone lo usino per controlli di campo molto semplici.

2

Se si sta eseguendo la convalida del modulo, convalidandolo sull'evento onclick del pulsante, il modo in cui si sta tentando non ha senso, è meglio usarlo nell'evento <form></form>onsumbmit in questo modo.

<form action="someURL" method="post" onsubmit="return validate_activity();"> 

</form> 
2

Prova questo ...

<form action="...." onsubmit="submitForm()" name="form"> 

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

</form> 


function submitForm(){ 

    if(validationfails){ 

     return false; 
    } 
    else { 
     document.form.submit(); 
     return true; 
    } 
} 
Problemi correlati