2009-03-10 10 views
5

Quando il mio modulo non convalida, voglio disabilitare la funzione di invio del modulo. Posso farlo disabilitando il pulsante di invio, ma questo lascerebbe il tasto Invio deselezionato.
Posso impostare il .submit (return false); ma poi non posso riattivarlo più tardi.Disabilita/abilita l'invio di tutto il modulo con jquery

Qualche suggerimento?

risposta

12

solo una semplificazione del Pim (a cura di tirare sul contributo James):


$('#form').submit(formValidated); 
0

Invece di chiamare direttamente la funzione di invio, chiamare una funzione intermedia e effettuare un controllo.

cioè

var isSubmitable = false; 

function submitForm() { 
    if(isSubmitable) { 
     myform.submit(); 
    } 
} 
5

ne dite di fare il controllo all'interno del metodo di invio:

$('#form').submit (function() { 
if(formValidated()) 
    return true; 
return false; 
}); 
+0

Lui, semplice e di lavoro :) –

+1

Solo una nota che probabilmente già sapevi: non dimenticare di fare anche le convalide sul lato server, anche se il javascript disabilitato lo ignorerebbe. – lpfavreau

0

Un'altra possibile soluzione:.

$ ('# forma') cambiamento (function() { (isValid ($ ('# form'))? $ ('# SubmitBtn'). Attr ('disabled', false): $ ('# submitBtn'). Attr ('disabilitato', vero) }) ;

Ovviamente, isValid() controlla che tutti gli elementi $ ('# form') siano conformi alle regole di convalida. Ecco come lo farei.

7

Ho fatto la seguente, che ha lavorato (disabilitare pulsante di invio e formare presentare):

var condition = true; //check whatever you like 
if(condition) 
    $('input[type=submit]', this).attr('disabled', 'disabled'); 
    $('form').bind('submit',function(e){e.preventDefault();}); 
}else{ 
    $('input[type=submit]', this).removeAttr('disabled', 'disabled'); 
    $('form').unbind('submit'); 
} 
1

Solo un semplificazione delle risposta originale di Nick:

$('#form').submit(formValidated); 
Problemi correlati