Comment vérifier la valeur 'indéfinie' dans jQuery

Réponses:

379

La bibliothèque JQuery a été développée spécifiquement pour simplifier et unifier certaines fonctionnalités JavaScript.

Cependant, si vous avez besoin de comparer une variable à une undefinedvaleur, il n'est pas nécessaire d'inventer une méthode particulière, car JavaScript a un typeofopérateur, qui est simple, rapide et multiplateforme:

if (typeof value === "undefined") {
    // ...
}

Il renvoie une chaîne indiquant le type de la variable ou d'un autre opérande non évalué. Le principal avantage de cette méthode, par rapport à if (value === undefined) { ... }, est qu'elle typeofne lèvera jamais d'exception si la variable valuen'existe pas.

Vision
la source
12
@nahum jQuery est une bibliothèque JavaScript. Ce n'est pas un langage de programmation différent.
VisioN
10
lol omg commentes-tu vraiment ça ?? Je sais que c'est le même homme. Mais je suppose qu'il veut savoir s'il existe une sorte de méthode dans jQuery comme $ .isUndefined (Object); et renvoyez la valeur true ou false. typeof est juste du javascript sans aucun framework.
ncubica
Un de mes problèmes était: si vous faites quelque chose comme ça ("#myId"), assurez-vous de ce dont vous avez vraiment besoin: a. typeof ("#myId")=== "undefined" b. Ou:typeof ("#myId").val() === "undefined"
Alberici
3
@Alberici ("#myId")n'est rien d'autre qu'une constante de chaîne . Il sera toujours défini et aura un type de "string". Si vous voulez dire un objet jQuery réel créé avec $("#myId"), il sera toujours défini comme "object"(si vous avez correctement lié jQuery). L'existence d'un élément DOM avec ID myIdpeut être évaluée avec if ($("#myId").length > 0) { ... }, tandis que vérifier si sa valeur n'est pas vide peut être fait avec if ($("#myId").val()) { ... }. Aucune de ces clauses ne se rapporte réellement au sujet de cette question.
VisioN
1
@ user3284463 Comme mentionné dans la réponse, simple déclenchera value === undefinedune exception si la valuevariable n'existe pas. C'est donc à vous de décider quoi utiliser dans la vraie vie.
VisioN le
26

Dans ce cas, vous pouvez utiliser une === undefinedcomparaison:if(val === undefined)

Cela fonctionne car valil existe toujours (c'est un argument de fonction).

Si vous vouliez tester une variable arbitraire qui n'est pas un argument, c'est-à-dire qui pourrait ne pas être définie du tout, vous devrez l'utiliser if(typeof val === 'undefined')pour éviter une exception au cas où valelle n'existerait pas.

ThiefMaster
la source
16

Notez que typeof renvoie toujours une chaîne et ne génère pas d'erreur si la variable n'existe pas du tout.

function A(val){
  if(typeof(val)  === "undefined") 
    //do this
  else
   //do this
}
Jignesh Rajput
la source
1
Pour la comparaison de chaînes, je pense que nous devons utiliser à la ===place de==
Sreeram
@Sreeram ils font tous les deux des comparaisons, juste de différentes manières ... cela fonctionnera bien
RVB
10

Je sais que je suis en retard pour répondre à la fonction mais jquery a une fonction de construction pour le faire

if(jQuery.type(val) === "undefined"){
    //Some code goes here
}

Reportez-vous au document API jquery de jquery.type https://api.jquery.com/jQuery.type/ pour le même.

Arpita
la source
3

Vous pouvez utiliser une technique de raccourci pour vérifier si elle est indéfinie ou nulle

 function A(val)
 {
   if(val || "") 
   //do this
 else
 //do this
 }

J'espère que ceci vous aidera

Rohidas Kadam
la source
2
if (value === undefined) {
    // ...
}
sandeep kumar
la source
1

quand je teste " typeof obj === undefined", le alert(typeof obj)retour object, même si obj n'est pas défini. Puisque obj est le type de Objectson retour Object, pasundefined .

Donc, après des heures de tests, j'ai opté pour la technique ci-dessous.

if(document.getElementById(obj) !== null){
//do...
}else{
//do...
}

Je ne sais pas pourquoi la première technique n'a pas fonctionné, mais je fais mon travail avec cela.

Sridhar K
la source
0

Si vous avez le nom de l'élément et non l'identifiant, nous pouvons effectuer la vérification non définie sur tous les éléments de texte (par exemple) comme ci-dessous et les remplir avec une valeur par défaut, par exemple 0.0:

var aFieldsCannotBeNull=['ast_chkacc_bwr','ast_savacc_bwr'];
 jQuery.each(aFieldsCannotBeNull,function(nShowIndex,sShowKey) {
   var $_oField = jQuery("input[name='"+sShowKey+"']");
   if($_oField.val().trim().length === 0){
       $_oField.val('0.0')
    }
  })
Yoosaf Abdulla
la source
0

Je ne suis pas sûr que ce soit la meilleure solution, mais cela fonctionne bien:

if($someObject['length']!=0){
    //do someting
}
esdu
la source
0
function isValue(value, def, is_return) {
    if ( $.type(value) == 'null'
        || $.type(value) == 'undefined'
        || $.trim(value) == ''
        || ($.type(value) == 'number' && !$.isNumeric(value))
        || ($.type(value) == 'array' && value.length == 0)
        || ($.type(value) == 'object' && $.isEmptyObject(value)) ) {
        return ($.type(def) != 'undefined') ? def : false;
    } else {
        return ($.type(is_return) == 'boolean' && is_return === true ? value : true);
    }
}

essayez ceci ~ vérificateur de tous types

MGK
la source
0

Vous pouvez utiliser deux voies 1) if ( val == null ) 2)if ( val === undefine )

Suhag Lapani88
la source