jQuery: comprobar si el valor de un campo es nulo (vacío)

101

¿Es esta una buena forma de comprobar si el valor de un campo es null?

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

¿O hay un mejor camino?

ziiweb
fuente
1
¿Qué tipo de elemento es #person_data? y ¿qué consideras como un valor NULO?

Respuestas:

170

El valor de un campo no puede ser nulo, siempre es un valor de cadena.

El código comprobará si el valor de la cadena es la cadena "NULL". En su lugar, desea verificar si es una cadena vacía:

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

o:

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

Si desea verificar si el elemento existe, debe hacerlo antes de llamar val:

var $d = $('#person_data[document_type]');
if ($d.length != 0) {
  if ($d.val().length != 0 ) {...}
}
Guffa
fuente
31
The value of a field can not be null, it's always a string value.esto no es del todo cierto. Tengo un selectno conteniendo options. Cuando actúo .val()en esto, vuelve null. Jquery 1.7.2
Liam
@Pispirulito: No lo creo y no creo que vaya a cambiar. A selectsin ningún optionelemento no es algo que tenga normalmente. Es bastante inútil.
Guffa
@Guffa ruega diferir, un vacío <select>puede contener posibles opciones para su usuario cuyos <option>s provendrán de algún tipo de validación.
Malcolm Salvador
Si usa la siguiente solución para proporcionar un marcador de posición en su select, comenzará con un nullvalor porque se selecciona una opción 'deshabilitada'. stackoverflow.com/questions/5805059/…
Sygmoral
37

También recortaría el campo de entrada, porque un espacio podría hacer que parezca lleno

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

}
Flipke
fuente
14

Asumiendo

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

tienes estos casos:

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)

Entonces, use lo que necesite.

darioo
fuente
11

eso depende del tipo de información que le esté pasando al condicional.

a veces su resultado será nullo undefinedo ''o 0, para mi simple validación, uso esto si.

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

NOTA : null! ='null'

Allan Felipe Murara
fuente
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;
        }
    },

Utilice estos ayudantes para lograrlo.

Nilesh Moradiya
fuente
esto casi parece que isStringNullOrEmptyes isStringFalseypor lo que return !val;funcionaría
Marcos Schultheiss
0

jquery proporciona val()función y not value(). Puede verificar la cadena vacía usando jquery

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

Tratar

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

Kamil Kiełczewski
fuente