jQuery: проверка, является ли значение поля нулевым (пустым)


102

Это хороший способ проверить, соответствует ли значение поля null?

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

Или есть способ лучше?


1
что это за элемент #person_data? и что вы считаете значением NULL?

Ответы:


170

Значение поля не может быть нулевым, это всегда строковое значение.

Код проверит, является ли строковое значение строкой «NULL». Вместо этого вы хотите проверить, является ли это пустой строкой:

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

или:

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

Если вы хотите проверить, существует ли элемент вообще, вы должны сделать это перед вызовом val:

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

31
The value of a field can not be null, it's always a string value.это не совсем так. У меня selectнет содержания options. Когда я .val()это делаю, он возвращается null. Jquery 1.7.2
Лиам

@Pispirulito: Я так не думаю и не думаю, что это будет изменено. А selectбез optionэлементов - это не то, что у вас обычно есть. Это бесполезно.
Guffa

@Guffa, позвольте отличаться, пустое поле <select>может содержать возможные варианты для вашего пользователя, чьи <option>s будут получены в результате какой-то проверки.
Малькольм Сальвадор

Если вы используете следующее решение для предоставления заполнителя в вашем select, оно начнется со nullзначения, поскольку выбран параметр «отключено». stackoverflow.com/questions/5805059/…
Sygmoral

37

Я бы также обрезал поле ввода, потому что пробел может сделать его заполненным

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

}

14

Предполагая

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

у вас есть такие кейсы:

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)

Итак, используйте то, что вам нужно.


11

это зависит от того, какую информацию вы передаете в условное.

иногда ваш результат будет nullили undefinedили ''или 0, для моей простой проверки я использую это if.

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

Примечание : null! ='null'


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;
        }
    },

Используйте для этого помощников.


это почти похоже на то isStringNullOrEmpty, isStringFalseyи, таким образом, return !val;будет работать
Марк

0

jquery предоставляет val()функции и not value(). Вы можете проверить пустую строку с помощью jquery

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.