JQuery vérifie si une entrée de texte a une valeur

Je souhaite demander s'il existe une meilleure façon de jQuery de sélectionner plusieurs entrées de texte, puis de vérifier si l'une d'elles a une valeur. Voici mon code:

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

Vous pouvez faire comme ci-dessous:

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

L'utilisation d'une fonction commune comme celle-ci la rendrait réutilisable:

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

Et vous pourriez l'appeler comme ceci:

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

Essayez jQuery chaque ()

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

Utilisez simplement ceci:

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

Que diriez-vous:

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

Un autre exemple: 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 }); }); 

Le problème avec l'obtention de la propriété length sur le filter() est que jQuery évaluera chaque élément de la collection, juste pour remplir un compte lorsque tout ce qui nous préoccupe est de savoir si la valeur est supérieure à zéro.

Aucune des réponses actuelles et même les propres .is() , .has() et .filter() utilisent les courts-circuits dès que les critères sont respectés.

Vous pouvez définir une méthode d'extension simple appelée .any() comme ceci:

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

Ensuite, passez une fonction de filtrage comme ceci:

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