2009-07-25 19 views
6

Im Cerchi una soluzione semplice per interrompere un modulo di accesso dall'invio con campi di input vuoti. Il codice per il modulo è sotto. Mi piacerebbe usare un semplice solutone Javascript, se possibile.Interrompi invio con valori di input vuoti

<form id="login" method="post" action=""> 
    <input type="text" name="email" id="email" /> 
    <input type="password" name="pwd" id="pwd" /> 
    <button type="submit" id="submit">Login</button> 
</form>  

Se possibile, vorrei anche modificare il bordo dei campi vuoti.

Grazie in anticipo.

risposta

9

codice di esempio con controlli fittizi:

<script type="text/javascript"> 
function checkForm(form) { 
    var mailCheck = checkMail(form.elements['email']), 
     pwdCheck = checkPwd(form.elements['pwd']); 
    return mailCheck && pwdCheck; 
} 

function checkMail(input) { 
    var check = input.value.indexOf('@') >= 0; 
    input.style.borderColor = check ? 'black' : 'red'; 
    return check; 
} 

function checkPwd(input) { 
    var check = input.value.length >= 5; 
    input.style.borderColor = check ? 'black' : 'red'; 
    return check; 
} 
</script> 

<style type="text/css"> 
#login input { 
    border: 2px solid black; 
} 
</style> 

<form id="login" method="post" action="" onsubmit="return checkForm(this)"> 
    <input type="text" name="email" id="email" onkeyup="checkMail(this)"/> 
    <input type="password" name="pwd" id="pwd" onkeyup="checkPwd(this)"/> 
    <button type="submit" id="submit">Login</button> 
</form> 
3

approccio possibile:

  • azione impostazione per #
  • aggiungendo gestore per il pulsante di invio o la onsubmit della forma
  • modificare l'azione del modulo, se i campi di testo non sono vuoti

Modifica: Per fare in modo che funzioni anche per utenti non javascript, inserire # -action quando la pagina è caricata.

+1

E non dimenticare di aggiungere return false; nel gestore onsubmit, se il campo di testo è vuoto. Inoltre, controlla il plugin jQuery Validation per un approccio migliore alla convalida dei moduli: http://docs.jquery.com/Plugins/Validation –

+0

hai ragione con il ritorno false. Ma non ho visto nulla di jQuery nella domanda ;-) – TheHippo

+0

Se possibile, potresti fornire un esempio di cosa intendi. Sono un po 'nuovo con JS. Le mie radici sono in xHTML e CSS. –

2

per tenerlo minimo vorrei solo usare:

<form id="login" method="post" action="" onSubmit="if (this.email.value == '' || this.pwd.value == '') {return false;}"> 

Certo - non sottolineare ciò che è fuori luogo l'utente, ma funziona a meraviglia .

Problemi correlati