Abilita il button (o qualsiasi elemento) se alless un input ha valore

Ho bisogno di abilitare un button (e forse altri elementi della forma nel prossimo futuro) se alless uno degli elementi di input ha valori. Sto usando BootstrapValidator come libreria principale di validation poiché sto usando Twitter Bootstrap ma non ho idea, nel modo più semplice, di raggiungere questo objective. Quello che so è controllare each ingresso uno ad uno come ad esempio:

if ($('.some_input').length > 0) { // then do actions } 

Ma se ho molti campi, queste soluzioni sembrano essere noiose e non molto pratiche, anche in alcuni events come ad esempio: keypress , keyup , keydown , blur e forse anche altri (non chiari).

Adesso la forma è abbastanza semplice come l'image mostra qui sotto e la mia soluzione dovrebbe funzionare ma la forma crescerà velocemente e nel prossimo futuro così lo lascerò dietro e sto cercando un'altra soluzione.

2014-10-16_11-16-24

Qui il button "Buscar" (è abilitato sull'image ma non si preoccupa di ciò che mi manca a disabilitati quando ho preso lo screenshot) dovrebbero essere abilitati solo se uno degli input sul module (Codigo de la Norma, Año de Publicacion , Palabra o Termino que contiene la Norma) ha valori e possibilmente una scelta contrassegnata nella selezione in basso ha un valore diverso da quello predefinito (può essere qualsiasi come per esempio –Pick one– con valore = 0) in parole semplici: qualsiasi input ha alless 3 caratteri minimmum e la scelta nel SELECT deve essere diversa da quella predefinita, come posso farlo?

  $(function() { $(':text').on('input', function() { if( $(':text').filter(function() { return !!this.value; }).length > 0 ) { $('button').prop('disabled', false); } else { $('button').prop('disabled', true); } }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form> First name: <input type="text" name="firstname"><br> Last name: <input type="text" name="lastname"><br> <button disabled="disabled">Submit</button> </form> 

Ogni elemento di input ha un evento denominato change ad esso collegato. Vorrei aggiungere una function per eseguire each volta che questo è fatto.

Se vuoi veramente eseguire il codice each volta che viene aggiunta una sola lettera a un field, puoi invece utilizzare l'evento noto come input (assicuratevi di controllare le performance di qualsiasi codice come questo, perché verranno innescate molto!)

Anche se, c'è molto less supporto del browser per l'evento di input rispetto alla change .

 $('input.some_input').on('change', function() { if ($(this).val().length > 0) { alert('woot! text!'); } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input class='some_input' value='test' />