2016-04-09 5 views
1

Vorzugsweise möchten wir dies in jQuery tun, einfache Überprüfung, um zu überprüfen, ob die Eingabefelder leer sind. Dies sind jedoch dynamische Eingabefelder. Der Code soll helfen, mehr Sinn machen:Das Überprüfen eines Arrays von Eingabefeldern ist nicht leer.

<input type="text" id="qtn" name="question" /> 
<input type="text" name="answer[]" /> 
<button type="button" id="btn"> Save </button> 

ich die übliche Vorstellung für die Frage Eingang verstehe so etwas wie dies bedeuten würde:

$('#btn').click(function() { 
    var question = $.trim($('#qtn').val()); 

    // Check if empty of not 
    if (question === '') { 
     alert('Text-field is empty.'); 
     return false; 
    } else { 
     $('#form').submit(); 
    } 
}); 

Wie würde diese Arbeit für den answer[] Eingabetyp, wie es sein wird eine dynamische Anzahl von Antworten und möchte sicherstellen, dass, wie viele der Benutzer auch gewählt hat, alle diese Felder ausgefüllt sind.

Danke!

+0

meinst du, es sollte alle Eingabefelder validieren? – ameenulla0007

Antwort

4

Sie könnten die Methode filter() verwenden, um leere Textfelder in form zu finden. Beachten Sie auch, dass Sie diese Überprüfung bei der Übergabe der form selbst vornehmen sollten, nicht das Klicken einer Schaltfläche, da jemand das Formular durch Drücken der Eingabetaste senden kann, während der Fokus auf einer Textbox liegt. Versuchen Sie folgendes:

$('form').submit(function(e) { 
    var $emptyFields = $(this).find(':text').filter(function() { 
     return this.value.trim() == ''; 
    }); 

    if (!$emptyFields.length) { 
     e.preventDefault(); // stop the form submission 
     alert('Please fill out all fields'); 
    } else { 
     $form.submit(); 
    } 
}); 
+0

Gute Antwort, liebe die Verwendung von Filter. Ich würde auch vorschlagen, den Eingaben, die Sie validieren möchten, eine Klasse "erforderlich" hinzuzufügen, sodass Sie nicht benötigte Felder, die Sie später haben könnten, ausschließen. Sie könnten den leeren Feldern auch eine "Fehler" -Klasse hinzufügen, um die Fehler für den Benutzer hervorzuheben. – NOBrien

+0

Sieht gut aus, wird es jetzt ausprobieren! – StackMeUp123

+0

Dies scheint zu verursachen, dass mein Formular tatsächlich absendet, wenn irgendwo innerhalb des Formularbereichs geklickt wird? Auch wenn Sie in ein Eingabe-Textfeld klicken? – StackMeUp123

1

Versuchen Sie, wie dieses

$('#btn').click(function() { 
    var checkValidate = false; 
    $('input[type=text]').each(function() { 
      if(!$.trim($(this).val())){ 
      alert('Some fields are empty'); 
      checkValidate = true; 
      return false; 
      } 
    }); 
    if(!checkValidate) { 
     $('#form').submit(); 
    } 
}); 

Demo

1
$('#btn').click(function() { 
    var getTargetText = $(":text").filter(function() { return this.value==""; }); 
    if($(getTargetText[0]).val()=="") { 
     alert("Please Enter this Field"); 
     $(getTargetText[0]).focus(); 
     return false; 
    } 
}); 

Yup, wie Rory McCrossan ‚s Antwort, Filter würde die Option sein. Ich habe gerade geändert, um zu zielen, welches tatsächliche Textfeld Null ist.