2012-03-12 11 views
5

Disclaimer: So che ci sono un bel po 'di domande là fuori con questo argomento ed è stato molto affrontato, anche se ho bisogno di assistenza nel mio caso particolare.Disabilita invio se gli input sono vuoti jquery

Sto cercando di verificare se i valori di input sono vuoti su keyup, quindi disabilitare il pulsante di invio.

mio frammento di codice HTML:

<div class='form'> 
    <form> 
    <div class='field'> 
     <label for="username">Username</label> 
     <input id="username" type="text" /> 
    </div> 
    <div class='field'> 
     <label for="password">Password</label> 
     <input id="password" type="password" /> 
    </div> 
    <div class='actions'> 
     <input type="submit" value="Login" /> 
    </div> 
    </form> 
</div> 

ho usato l'esempio risposta da here con alcune modifiche:

(function() { 
    $('.field input').keyup(function() { 

     var empty = false; 
     $('.field input').each(function() { 
      if ($(this).val() == '') { 
       empty = true; 
      } 
     }); 

     if (empty) { 
      $('.actions input').attr('disabled', true); 
     } else { 
      $('.actions input').attr('disabled', false); 
     } 
    }); 
})() 

Qualsiasi aiuto sarebbe molto apprezzato!

+1

Questo è stato appena risposto per un'altra domanda. vedere: http://stackoverflow.com/questions/9671323/jquery-disable-multiple-dropdowns-not-working/9671361#9671361 –

+0

Sembra funzionare bene qui: http://jsfiddle.net/yUQeq/ – jasonlfunk

+0

You ' ho ragione, sta funzionando - ho più problemi :( – Jonathan

risposta

15

Suggerisco di disabilitare il pulsante per impostazione predefinita. Vorrei anche esaminare la lunghezza del .val(), non controllare una stringa vuota. Infine, penso che document.ready() è molto più leggibile rispetto il codice esistente: Ecco il codice completo:

HTML

<div class='form'> 
    <form> 
    <div class='field'> 
     <label for="username">Username</label> 
     <input id="username" type="text" /> 
    </div> 
    <div class='field'> 
     <label for="password">Password</label> 
     <input id="password" type="password" /> 
    </div> 
    <div class='actions'> 
     <input type="submit" value="Login" disabled="disabled" /> 
    </div> 
    </form> 
</div>​ 

JS/jQuery

$(document).ready(function() { 
    $('.field input').keyup(function() { 

     var empty = false; 
     $('.field input').each(function() { 
      if ($(this).val().length == 0) { 
       empty = true; 
      } 
     }); 

     if (empty) { 
      $('.actions input').attr('disabled', 'disabled'); 
     } else { 
      $('.actions input').removeAttr('disabled'); 
     } 
    }); 
}); 

Ecco a working fiddle.

0

Lo uso nel mio progetto e ci riesce.

$(document).ready(function() { 
    $('.field').keyup(function() { 

    var empty = false; 
    $('.field').each(function() { 
     if ($(this).val().length == 0) { 
      empty = true; 
     } 
    });     

    if (empty) { 
     $('.actions[type="submit"]').attr('disabled', 'disabled'); 
    } else { 
     $('.actions[type="submit"]').removeAttr('disabled'); 
    }     
    }); 
}); 
Problemi correlati