jQuery: kiểm tra xem giá trị của một trường là null (trống)


101

Đây có phải là một cách tốt để kiểm tra xem giá trị của một trường có phải nullkhông?

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

đây có phải là cách tốt hơn không?


1
# person_data là loại phần tử nào? và bạn coi giá trị NULL là gì?

Câu trả lời:


170

Giá trị của một trường không được rỗng, nó luôn là một giá trị chuỗi.

Mã sẽ kiểm tra xem giá trị chuỗi có phải là chuỗi "NULL" hay không. Thay vào đó, bạn muốn kiểm tra xem đó có phải là một chuỗi trống không:

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

hoặc là:

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

Nếu bạn muốn kiểm tra xem phần tử có tồn tại hay không, bạn nên làm điều đó trước khi gọi 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.điều này không hoàn toàn đúng. Tôi có một selectchứa không options. Khi tôi thực hiện .val()điều này, nó sẽ trở lại null. Jquery 1.7.2
Liam

@Pispirulito: Tôi không nghĩ vậy, và tôi không nghĩ rằng nó sẽ được thay đổi. A selectkhông có bất kỳ optionphần tử nào không phải là thứ mà bạn thường có. Nó khá vô dụng.
Guffa

@Guffa xin có sự khác biệt, một hộp trống <select>có thể chứa các tùy chọn khả thi cho người dùng của bạn mà họ <option>sẽ đến từ một số loại xác thực.
Malcolm Salvador

Nếu bạn sử dụng giải pháp sau để cung cấp trình giữ chỗ trong của bạn select, nó sẽ bắt đầu với một nullgiá trị vì tùy chọn 'vô hiệu hóa' được chọn. stackoverflow.com/questions/5805059/…
Sygmoral

37

Tôi cũng sẽ cắt bớt trường đầu vào, vì một khoảng trống có thể khiến nó trông giống như bị lấp đầy

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

}

14

Giả định

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

bạn có những trường hợp sau:

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)

Vì vậy, hãy sử dụng những gì bạn cần.


11

điều đó phụ thuộc vào loại thông tin bạn đang chuyển đến điều kiện ..

đôi khi kết quả của bạn sẽ là nullhoặc undefinedhoặc ''hoặc 0, đối với xác nhận đơn giản của tôi, tôi sử dụng điều này nếu.

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

LƯU Ý : 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;
        }
    },

Sử dụng những người trợ giúp này để đạt được điều đó.


này gần như có vẻ như isStringNullOrEmptyisStringFalseyvà do đó return !val;sẽ làm việc
Đánh dấu Schultheiss

0

jquery cung cấp val()chức năng và not value(). Bạn có thể kiểm tra chuỗi trống bằng jquery

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.