it-swarm.com.de

jQuery prüft, ob eine Texteingabe einen Wert hat

Ich möchte fragen, ob es in jQuery eine bessere Möglichkeit gibt, mehrere Texteingaben auszuwählen und dann zu prüfen, ob einer von ihnen einen Wert hat. Hier ist mein Code: 

if ($("#reference").val() != "" || $("#pin").val() != "" || $("#fName").val() != "" || $("#mName").val() != "" || $("#datepicker").val() != "") { /*logic goes here */ }
23
dilm

Sie könnten wie folgt machen:

if ($("#reference,#pin,#fName,#mName,#datepicker").filter(function() { return $(this).val(); }).length > 0) {
  //..
}

Die Verwendung einer allgemeinen Funktion wie der folgenden würde es wiederverwendbar machen

function hasValue(elem) {
    return $(elem).filter(function() { return $(this).val(); }).length > 0;
}

Und man könnte es so nennen:

hasValue("#my-input-id");
50
xdazz

Probieren Sie jQuery each () aus.

 $('input[type=text]').each(function(){
     var text_value=$(this).val();
     if(text_value!='')
       {
        console.log('Value exist');
        }

   })
10
Shijin

Das Problem beim Abrufen der length-Eigenschaft auf filter() besteht darin, dass jQuery jedes einzelne Element in der Auflistung auswertet, um nur einen Zähler zu füllen, wenn es uns nur darum geht, ob der Wert größer als Null ist.

Keine der aktuellen Antworten und nicht einmal die eigenen .is() , .has() und .filter() / von jQuery verwenden Kurzschlüsse, sobald die Kriterien erfüllt sind.

Sie können eine einfache Erweiterungsmethode mit dem Namen .any() wie folgt definieren: 

jQuery.fn.any = function(filter){ 
    for (i=0 ; i<this.length ; i++) {
     if (filter.call(this[i])) return true;
  }
  return false;
};

Und dann eine Filterfunktion wie folgt übergeben:

var someInputsEmpty = $("#reference,#pin,#fName,#mName,#datepicker").any(function() { 
    return this.value == '';
});

jQuery.fn.any = function(filter){ 
	for (i=0 ; i<this.length ; i++) {
  	 if (filter.call(this[i])) return true;
  }
  return false;
};

$(function() {
	
  var gotMatch = $(":input").any(function() { 
                   return this.value == 'hi';
                 });

  if (gotMatch) {
    console.log("Hello to you too!");
  } else {
  	console.log("Why don't you say Hi!");
  }
  
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="text" value="">
<input type="text" value="">
<input type="text" value="">

Weiterführende Literatur:

2
KyleMit

Verwenden Sie einfach dieses:

if (!$("#id").val().length == 0))
1
Rajesh Patel

Wie wäre es mit:

http://jsfiddle.net/lollero/rr2ss/1/

Ein anderes Beispiel: http://jsfiddle.net/lollero/rr2ss/12/

$(function() {

    // Check value of each and every input element....
    // Which you can of course change to be more specific, like: $('#myForm input')
    $( "input" ).val(function( i, val ) {

        // Return the console log IF value is not empty
        // value=" " still counts as "not empty", because technically it isn't
        // You could of course replace the console.log(); with anything you'd like
        val && console.log('not empty: input-' + (++i) );

        // Note that you don't have to return val if you don't  want to, it's just for show in this case.
        return val

    });

});
0
Joonas