Wie überprüfe ich, ob Textfelder beim Absenden des Formulars mit jQuery leer sind?

Lesezeit: 4 Minuten

Benutzer-Avatar
Betrüger

Wie könnte ich jQuery verwenden, um zu prüfen, ob Textfelder beim Senden ohne Laden leer sind login.php?

<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>

Vielen Dank.

  • Verwenden Sie das erforderliche Attribut. Als Fallback für die Kompatibilität können Sie andere Wege nutzen.

    – NÖ

    15. Mai 2013 um 4:59 Uhr

  • @NEO “andere Wege” bietet überhaupt keine Hilfe.

    – ProfK

    7. Januar 2018 um 5:58 Uhr

Benutzer-Avatar
palast

Sie können einen Event-Handler mit jQuery an das JavaScript-Event „submit“ binden .submit Methode und dann getrimmt #log Textfeldwert und prüfen, ob leer oder nicht wie:

$('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;
    }
});

GEIGE-DEMO

  • Dies funktioniert nicht für Firefox-Browser, können Sie angeben, welche für Chrome- und Firefox-Browser funktionieren.

    – Gajanan Kolpuke

    26. November 2018 um 5:44 Uhr

Benutzer-Avatar
NEO

Sie können ‘erforderlich’ verwenden 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>

  • Funktioniert erforderlich immer noch nicht im Safari-Browser? Das wird heute auf w3schools gesagt.

    – Markieren

    18. Februar 2016 um 21:45 Uhr

Benutzer-Avatar
Dominik P

Eine einfache Lösung wäre so etwas

$( "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; }
});

Beachten Sie das jQuery.on() -Methode ist nur in jQuery-Version 1.7+ verfügbar, ist aber jetzt die bevorzugte Methode zum Anhängen von Event-Handlern.

Dieser Code durchläuft alle Eingaben im Formular und verhindert die Formularübermittlung, indem er „false“ zurückgibt, wenn eine davon keinen Wert hat. Beachten Sie, dass dem Benutzer keinerlei Meldung darüber angezeigt wird, warum das Formular nicht gesendet werden konnte (ich würde dringend empfehlen, eine hinzuzufügen).

Oder Sie könnten sich die ansehen jQuery validieren Plugin. Es tut dies und noch viel mehr.

Hinweis: Diese Art von Technik sollte immer in Verbindung mit serverseitiger Validierung verwendet werden.

  • Aber dies wird auch nach versteckten Feldern suchen und wenn sie leer sind, wird das Absenden des Formulars verhindert.

    – vdu

    15. Mai 2013 um 4:58 Uhr

  • Guter Punkt. Ich habe eine Attributauswahl hinzugefügt, um ausgeblendete Felder zu ignorieren.

    – Dominik P

    15. Mai 2013 um 6:32 Uhr

  • Wird das nicht einfach eingestellt has_empty nach dem Wert der letzten Eingabe im Formular?

    – Adam Rowe

    7. April 2019 um 23:51 Uhr

  • Nicht wirklich. Wir initialisieren has_empty zu false und durchlaufen Sie dann jede Eingabe im Formular. Wenn irgendein Eingang leer ist, setzen wir has_empty zu true und break the loop (das ist, was die return false handelt von). Dann prüfen wir einfach den Wert von has_empty und bedingt zurückgeben false um das Absenden des Formulars zu verhindern, wenn leere Felder vorhanden sind.

    – Dominik P

    8. April 2019 um 17:19 Uhr

Benutzer-Avatar
vdua

Sie müssen dem Formular einen Handler hinzufügen einreichen Veranstaltung. Im Handler müssen Sie für jedes Textfeld prüfen, Element- und Passwortfelder auswählen, wenn die Werte nicht leer sind.

$('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.
});

Benutzer-Avatar
Mareg

Ich hasse Formulare, die mir nicht sagen, welche Eingaben fehlen. Also verbessere ich die Antwort von Dominic – danke dafür.

In der CSS-Datei setzen Sie die Klasse “borderR” auf border hat rote Farbe.

$('#<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
});

Benutzer-Avatar
JamesN

Sie sollten es mit dem jquery validate plugin versuchen:

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

Benutzer-Avatar
Hamzeh Salhi

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();
    });
});

  • Willkommen bei S.O. Während dieser Code das OP-Problem lösen könnte, können Sie bitte erklären, warum und wie er dies tut? Dies würde die Qualität Ihrer Antwort erheblich verbessern.

    – m00am

    28. Oktober 2016 um 9:42 Uhr

1144850cookie-checkWie überprüfe ich, ob Textfelder beim Absenden des Formulars mit jQuery leer sind?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy