jQuery: sprawdzanie, czy wartość pola jest null (pusta)

101

Czy to dobry sposób na sprawdzenie, czy wartość pola to null?

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

Czy jest jakiś lepszy sposób?

ziiweb
źródło
1
jakim rodzajem elementu jest #person_data? i co uważacie za wartość NULL?

Odpowiedzi:

170

Wartość pola nie może być pusta, zawsze jest to ciąg znaków.

Kod sprawdzi, czy wartość ciągu to „NULL”. Chcesz sprawdzić, czy jest to pusty ciąg:

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

lub:

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

Jeśli chcesz sprawdzić, czy element w ogóle istnieje, powinieneś to zrobić przed wywołaniem val:

var $d = $('#person_data[document_type]');
if ($d.length != 0) {
  if ($d.val().length != 0 ) {...}
}
Guffa
źródło
31
The value of a field can not be null, it's always a string value.to nie jest do końca prawdą. Mam selectzawierający nie options. Kiedy .val()na tym występuję, to wraca null. Jquery 1.7.2
Liam,
@Pispirulito: Nie sądzę i nie sądzę, że zostanie to zmienione. A selectbez żadnych optionelementów nie jest czymś, co zwykle masz. To całkiem bezużyteczne.
Guffa
@Guffa błagam o różnice, puste <select>może zawierać możliwe opcje dla twojego użytkownika, których wartości <option>będą pochodzić z jakiegoś rodzaju walidacji.
Malcolm Salvador
Jeśli użyjesz poniższego rozwiązania, aby zapewnić symbol zastępczy w swoim select, zacznie się on od nullwartości, ponieważ wybrana jest opcja „wyłączona”. stackoverflow.com/questions/5805059/…
Sygmoral
37

Chciałbym również przyciąć pole wejściowe, ponieważ spacja może wyglądać jak wypełniona

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

}
Flipke
źródło
14

Zarozumiały

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

masz te przypadki:

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)

Więc używaj tego, czego potrzebujesz.

darioo
źródło
11

to zależy od tego, jakie informacje przekazujesz warunkowi.

czasami wynikiem będzie nulllub undefinedlub ''lub 0, do mojej prostej weryfikacji używam tego if.

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

UWAGA : null! ='null'

Allan Felipe Murara
źródło
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;
        }
    },

Skorzystaj z tych pomocników, aby to osiągnąć.

Nilesh Moradiya
źródło
wydaje się, że to prawie isStringNullOrEmptyjest isStringFalseyi dlatego return !val;zadziała
Mark Schultheiss
0

jquery zapewnia val()funkcje i not value(). Możesz sprawdzić pusty ciąg za pomocą jquery

if($('#person_data[document_type]').val() != ''){}
Chinmayee G.
źródło
0

Próbować

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

Kamil Kiełczewski
źródło