2011-01-18 46 views
7

Tôi có lỗi val().length là null hoặc không phải là một đối tượng" từ mã:Javascript/JQuery - chiều dài' val() là null hoặc không phải là một đối tượng

function size(sender, args) { 

    var sizeVariable = $("input[id$='txtHello']"); 
    if (sizeVariable.val().length == 0) 
    { 
      args.IsValid = false; 
    } 
} 

Các lỗi xảy ra trên 'Nếu' tuyên bố . tôi cố gắng để kiểm tra xem:

  1. biến tồn tại
  2. nếu có cái gì đó trong biến

Tôi nghĩ vấn đề nằm ở điểm (1). Làm cách nào để kiểm tra xem trường văn bản có tồn tại không (để hy vọng giải quyết vấn đề)?

Trả lời

16

Bạn có thể kiểm tra xem trường nhập tồn tại như vậy:

if($("input[id$='txtHello']").length > 0) { ... } 

Nếu không, sẽ trở lại val()undefined.

Bạn có thể bỏ qua ngay lập tức như sau:

if(!!$("input[id$='txtHello']").val()) 

... vì cả hai undefined"" sẽ giải quyết để false

+0

này là tuyệt vời! – user532104

1

là sizeVarialbe null khi cố gắng để kiểm tra độ dài?



function size(sender, args) { 

    var sizeVariable = $("input[id$='txtHello']"); 

    if (sizeVariable != null) 
    { 
     if (sizeVariable.val().length == 0) 
     { 
      args.IsValid = false; 
     } 
    } 
    else 
    { 
     alert('error'); 
    } 
} 

+0

'sizeVariable' sẽ không bao giờ rỗng. Nếu trường text không tồn tại, thì 'sizeVariable' sẽ là một đối tượng jQuery rỗng, không phải là null. Hàm 'val()' sẽ vẫn có sẵn trên nó, nhưng trả về 'undefined' để' val(). Length' sẽ không có sẵn. –

+0

@ David, cảm ơn, tôi đã không nhận ra điều đó. – WraithNath

5

Thay vào đó hãy thử if (sizeVariable.val() == undefined || sizeVariable.val().length == 0). Bằng cách đó, nó sẽ kiểm tra xem có một giá trị đầu tiên, trước khi cố gắng để nhìn thấy nó là bao lâu, nếu nó hiện diện

+1

tại sao @BvdVen sử dụng === và bạn sử dụng == thay thế? Đó là chính xác? –

+0

=== là chặt chẽ hơn và tốt hơn trong trường hợp này hơn == –

1

làm kiểm tra của bạn như thế này

if (sizeVariable.val() === undefined || sizeVariable.val().length == 0) 
0

Bạn đã cố gắng ...?

if(sizeVariable.size() == 0) 
{ 
    args.IsValid = false; 
} 
+3

Có * bạn * đã thử không? –

+0

Xin lỗi bạn đời, điều này dường như thất bại – user532104

+0

Xin lỗi, kích thước() cần phải là chữ thường, có vẻ là giải pháp đơn giản nhất đối với tôi. – baked

0

Trong jQuery, bạn có thể sử dụng:

if(input.val().length > limit) 

hoặc nếu vì một lý do nào đó không làm việc, bạn có thể sử dụng:

if((input.val()).length > limit) 
Các vấn đề liên quan