jQuery: verificar se o valor de um campo é nulo (vazio)

101

Essa é uma boa maneira de verificar se o valor de um campo é null?

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

Ou há um modo melhor?

ziiweb
fonte
1
que tipo de elemento é #person_data? e o que você considera um valor NULL?

Respostas:

170

O valor de um campo não pode ser nulo, é sempre um valor de string.

O código verificará se o valor da string é a string "NULL". Você deseja verificar se é uma string vazia:

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

ou:

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

Se você quiser verificar se o elemento existe, você deve fazer isso antes de chamar val:

var $d = $('#person_data[document_type]');
if ($d.length != 0) {
  if ($d.val().length != 0 ) {...}
}
Guffa
fonte
31
The value of a field can not be null, it's always a string value.isso não é totalmente verdade. Eu tenho um selectnão contendo options. Quando eu atuo .val()nisso, ele retorna null. Jquery 1.7.2
Liam
@Pispirulito: Acho que não, e não acho que vai mudar. Um selectsem nenhum optionelemento não é algo que você normalmente tem. É bem inútil.
Guffa
@Guffa discorda, um vazio <select>pode conter opções possíveis para seu usuário cujos <option>s virão de algum tipo de validação.
Malcolm Salvador
Se você usar a solução a seguir para fornecer um espaço reservado em seu select, ele começará com um nullvalor porque uma opção 'desativada' foi selecionada. stackoverflow.com/questions/5805059/…
Sygmoral
37

Eu também cortaria o campo de entrada, porque um espaço poderia fazer com que parecesse preenchido

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

}
Flipke
fonte
14

Assumindo

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

você tem estes 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)

Então, use o que você precisa.

Darioo
fonte
11

isso depende de que tipo de informação você está passando para a condicional.

às vezes seu resultado será nullou undefinedou ''ou 0, para minha validação simples, eu uso este if.

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

NOTA : null! ='null'

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

Utilize esses ajudantes para conseguir isso.

Nilesh Moradiya
fonte
isto quase parece que isStringNullOrEmptyé isStringFalseye, portanto, return !val;iria trabalhar
Mark Schultheiss
0

jquery fornece val()funções e not value(). Você pode verificar a string vazia usando jquery

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

Experimentar

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

Kamil Kiełczewski
fonte