2013-05-15 11 views
18

Come posso utilizzare jquery per verificare se i campi di testo sono vuoti quando si inviano senza caricare login.php?Modulo Jquery inviare per verificare i campi vuoti

<form action="login.php" method="post"> 
    <label>Login Name:</label> 
    <input type="text" name="email" id="log" /> 
    <label>Password:</label> 
    <input type="password" name="password" id="pwd" /> 
    <input type="submit" name="submit" value="Login" /> 
</form> 

Grazie.

+1

Usa attributo necessario. Come alternativa alla compatibilità, puoi usare altri modi. – NEO

+0

@NEO "altri modi" non offre alcun aiuto. – ProfK

risposta

31

Si può fare questo:

// Bind the event handler to the "submit" JavaScript event 
$('form').submit(function() { 

    // Get the Login Name value and trim it 
    var name = $.trim($('#log').val()); 

    // Check if empty of not 
    if (name === '') { 
     alert('Text-field is empty.'); 
     return false; 
    } 
}); 

FIDDLE DEMO

9

si può usare 'necessaria' http://jsbin.com/atefuq/1/edit

<form action="login.php" method="post"> 
    <label>Login Name:</label> 
    <input required type="text" name="email" id="log" /> 
    <label>Password:</label> 
    <input required type="password" name="password" id="pwd" /> 
    <input required type="submit" name="submit" value="Login" /> 
</form> 
+0

Non è ancora richiesto il funzionamento del browser Safari? Questo è ciò che si dice oggi su w3schools. – Mark

+0

Questo non funziona su Safari. – Tom

1

si dovrebbe provare con il plugin jQuery validate:

$('form').validate({ 
    rules:{ 
     email:{ 
      required:true, 
      email:true 
     } 
    }, 
    messages:{ 
     email:{ 
      required:"Email is required", 
      email:"Please type a valid email" 
     } 
    } 
}) 
8

Una soluzione semplice sarebbe qualcosa di simile

$("form").on("submit", function() { 

    var has_empty = false; 

    $(this).find('input[type!="hidden"]').each(function() { 

     if (! $(this).val()) { has_empty = true; return false; } 
    }); 

    if (has_empty) { return false; } 
}); 

Nota: Il metodo jQuery.on() è disponibile solo in versione jQuery 1.7+, ma ora è il metodo preferito di associare i gestori di eventi.

Questo codice esegue il ciclo di tutti gli input nel modulo e impedisce l'invio del modulo restituendo false se nessuna di esse non ha valore. Si noti che non visualizza alcun tipo di messaggio all'utente sul motivo per cui il modulo non è stato inviato (consiglio vivamente di aggiungerne uno).

Oppure, è possibile visualizzare il plug-in jQuery validate. Lo fa e molto altro.

NB: questo tipo di tecnica deve essere sempre utilizzato insieme alla convalida lato server.

+0

Ma questo controllerà anche i campi nascosti e se sono vuoti impedirà l'invio del modulo. – vdua

+0

Buon punto. Ho aggiunto un selettore di attributi per ignorare i campi nascosti. –

3

è necessario aggiungere un gestore all'evento submit. Nel gestore è necessario controllare per ogni campo di testo, selezionare i campi dell'elemento e della password se i valori non sono vuoti.

$('form').submit(function() { 
    var res = true; 
    // here I am checking for textFields, password fields, and any 
    // drop down you may have in the form 
    $("input[type='text'],select,input[type='password']",this).each(function() { 
     if($(this).val().trim() == "") { 
      res = false; 
     } 
    }) 
    return res; // returning false will prevent the form from submitting. 
}); 
3

Odio davvero le forme che non mi dicono quale input (s) è/mancano. Quindi miglioro la risposta di Dominic - grazie per questo.

Nel file css, la classe "borderR" del bordo è di colore rosso.

$('#<form_id>').submit(function() { 
    var allIsOk = true; 

    // Check if empty of not 
    $(this).find('input[type!="hidden"]').each(function() { 
     if (! $(this).val()) { 
      $(this).addClass('borderR').focus(); 
      allIsOk = false; 
     } 
    }); 

    return allIsOk 
}); 
1
function isEmpty(val) { 
if(val.length ==0 || val.length ==null){ 
    return 'emptyForm'; 
}else{ 
    return 'not emptyForm'; 
} 

}

$(document).ready(function(){enter code here 
    $("form").submit(function(event) { 
     $('input').each(function(){ 
      var getInputVal = $(this).val(); 
      if(isEmpty(getInputVal) =='emptyForm'){ 
       alert(isEmpty(getInputVal)); 
      }else{ 
       alert(isEmpty(getInputVal)); 
      } 
     }); 
     event.preventDefault(); 
    }); 
}); 
+2

Benvenuti in SO. Mentre questo codice potrebbe risolvere il problema degli OP, puoi spiegare perché e come lo fa? Ciò migliorerebbe notevolmente la qualità della risposta. – m00am

0
var save_val = $("form").serializeArray(); 
$(save_val).each(function(index, element) { 
    alert(element.name); 
    alert(element.val); 
}); 
Problemi correlati