jQuery: vérifier si la valeur d'un champ est nulle (vide)

101

Est-ce un bon moyen de vérifier si la valeur d'un champ est null?

if($('#person_data[document_type]').value() != 'NULL'){}

Ou y a-t-il un meilleur moyen?

ziiweb
la source
1
quel type d'élément est #person_data? et que considérez-vous comme une valeur NULL?

Réponses:

170

La valeur d'un champ ne peut pas être nulle, c'est toujours une valeur de chaîne.

Le code vérifiera si la valeur de la chaîne est la chaîne "NULL". Vous voulez vérifier si c'est une chaîne vide à la place:

if ($('#person_data[document_type]').val() != ''){}

ou:

if ($('#person_data[document_type]').val().length != 0){}

Si vous voulez vérifier si l'élément existe, vous devez le faire avant d'appeler val:

var $d = $('#person_data[document_type]');
if ($d.length != 0) {
  if ($d.val().length != 0 ) {...}
}
Guffa
la source
31
The value of a field can not be null, it's always a string value.ce n'est pas tout à fait vrai. J'ai un selectnon contenant options. Quand je joue .val()dessus, ça revient null. Jquery 1.7.2
Liam
@Pispirulito: Je ne pense pas, et je ne pense pas que cela changera. Un selectsans aucun optionélément n'est pas quelque chose que vous avez normalement. C'est assez inutile.
Guffa
@Guffa prie de différer, un vide <select>peut contenir des options possibles pour votre utilisateur dont les <option>s proviendront d'une sorte de validation.
Malcolm Salvador
Si vous utilisez la solution suivante pour fournir un espace réservé dans votre select, il commencera par une nullvaleur car une option «désactivé» est sélectionnée. stackoverflow.com/questions/5805059/…
Sygmoral
37

Je couperais également le champ de saisie, car un espace pourrait le faire ressembler à rempli

if ($.trim($('#person_data[document_type]').val()) != '')
{

}
Flipke
la source
14

En supposant

var val = $('#person_data[document_type]').value();

vous avez ces cas:

val === 'NULL';  // actual value is a string with content "NULL"
val === '';      // actual value is an empty string
val === null;    // actual value is null (absence of any value)

Alors, utilisez ce dont vous avez besoin.

darioo
la source
11

cela dépend du type d'informations que vous transmettez au conditionnel.

parfois votre résultat sera nullou undefinedou ''ou 0, pour ma simple validation, j'utilise ceci si.

( $('#id').val() == '0' || $('#id').val() == '' || $('#id').val() == 'undefined' || $('#id').val() == null )

REMARQUE : null! ='null'

Allan Felipe Murara
la source
6
_helpers: {
        //Check is string null or empty
        isStringNullOrEmpty: function (val) {
            switch (val) {
                case "":
                case 0:
                case "0":
                case null:
                case false:
                case undefined:
                case typeof this === 'undefined':
                    return true;
                default: return false;
            }
        },

        //Check is string null or whitespace
        isStringNullOrWhiteSpace: function (val) {
            return this.isStringNullOrEmpty(val) || val.replace(/\s/g, "") === '';
        },

        //If string is null or empty then return Null or else original value
        nullIfStringNullOrEmpty: function (val) {
            if (this.isStringNullOrEmpty(val)) {
                return null;
            }
            return val;
        }
    },

Utilisez ces aides pour y parvenir.

Nilesh Moradiya
la source
cela semble presque isStringNullOrEmptyest - isStringFalseyet donc return !val;travaillerait
Mark Schultheiss
0

jquery fournit la val()fonction et not value(). Vous pouvez vérifier une chaîne vide en utilisant jquery

if($('#person_data[document_type]').val() != ''){}
Chinmayee G
la source
0

Essayer

if( this["person_data[document_type]"].value != '') { 
  console.log('not empty');
}
<input id="person_data[document_type]" value="test" />

Kamil Kiełczewski
la source