La soluzione dovrebbe essere piuttosto semplice. Sto cercando di impedire che il modulo venga inviato correttamente quando non viene trovato alcun valore nelle caselle di input. Ecco il mio JSFiddle: http://jsfiddle.net/nArYa/7/Utilizzo di jQuery per impedire l'invio di moduli quando i campi di input sono vuoti
// Markup
<form action="" method="post" name="form" id="form">
<input type="text" placeholder="Your email*" name="email" id="email">
<input type="text" placeholder="Your name*" autocomplete=off name="name" id="user_name"
<button type="submit" id="signup" value="Sign me up!">Sign Up</button>
</form>
// jQuery
if ($.trim($("#email, #user_name").val()) === "") {
$('#form').submit(function(e) {
e.preventDefault();
alert('you did not fill out one of the fields');
})
}
Come si può vedere nel JSFiddle, il problema è che quando si digita qualcosa in entrambi i campi, il casella di avviso ANCORA si apre. Sto avendo difficoltà a capire perché. C'è qualcosa di sbagliato nel mio se ($. Trim ($ "# email, #user_name"). Val()) === "")?
Sì, si dovrebbe verificare ciascuno di essi individualmente, se si utilizza un solo selettore, un solo valore verrà restituito –
Dalla documentazione: Prendi il valore corrente del ** prima ** elemento nel set di elementi corrispondenti – Barmar
È necessario allegare una funzione javascript al pulsante di invio. Dove la funzione restituisce false se i campi non sono validi. – chadiusvt