2010-11-05 38 views
35

Tôi đang cố gắng xác định xem vùng văn bản có trống không nếu người dùng xóa những gì đã được điền sẵn trong vùng văn bản bằng cách sử dụng jQuery.jQuery phát hiện nếu vùng văn bản trống rỗng

Dù sao để làm điều này?

Đây là những gì tôi có và nó không làm việc

$(textarea).live('change', function(){ 
      if($(this).val().length == 0) { 
       $(submitButtonClass).addClass('disabled_button'); 
       $(submitButtonClass).removeClass('transSubmit'); 
      } else { 
       $('.disabled_button').addClass('transSubmit').css({ 
        'cursor':'pointer' 
       }).removeClass('disabled_button'); 
      } 
     }); 
+0

là 'textarea' một tên biến thực trong mã của bạn hoặc bạn quên bọc nó trong chuỗi phân cách? ví dụ. '$ (" textarea "). sống (...)'. Những gì bạn có nên làm việc, nếu không. Bạn có gặp lỗi gì không? –

+0

'textarea' là tên biến. Và tôi không nhận được bất kỳ lỗi ... Tôi gần như cần phải ràng buộc sự kiện keydown để các văn bản – dennismonsewicz

+0

nếu 'textarea' không phải là một bộ chọn, bạn nên sử dụng' ràng buộc' chứ không phải là 'sống'. Xem http://api.jquery.com/live/#caveats –

Trả lời

2

Bạn chỉ cần để có được giá trị của texbox và xem nếu nó có bất cứ điều gì trong đó:

if (!$(`#textareaid`).val().length) 
{ 
    //do stuff 
} 
+1

'.length' là một số, không phải là hàm. –

+0

Không val() cắt? Nếu không, tôi sẽ cắt không gian trắng phía sau chỉ trong trường hợp. –

+0

thx, typo ... đã được sửa. –

83
if (!$("#myTextArea").val()) { 
    // textarea is empty 
} 

Bạn cũng có thể sử dụng $.trim để đảm bảo phần tử không chỉ chứa khoảng trắng:

if (!$.trim($("#myTextArea").val())) { 
    // textarea is empty or contains only white-space 
} 
+3

hoạt động trong firefox, không hoạt động trong chrome – PUG

+0

@jaminator: hoạt động tốt cho tôi, không có mã không tương thích. Nếu bạn đã thử nó và nó không hoạt động thì có thể vấn đề nằm ở đâu đó trong mã của bạn. –

+0

công việc cần thiết trên chrome. – Dementic

0

Để tìm hiểu xem vùng văn bản có trống không, chúng tôi xem nội dung văn bản của văn bản và nếu tìm thấy một ký tự sinlge thì nó không trống.

Hãy thử:

if ($(#textareaid).get(0).textContent.length == 0){ 
    // action 
} 
//or 
if (document.getElmentById(textareaid).textContent.length == 0){ 
    // action 
} 

$(#textareaid) được chúng ta textarea jQuery đối tượng. $(#textareaid).get(0) cho chúng tôi nút dom. Chúng tôi cũng có thể sử dụng document.getElmentById(textareaid) mà không cần sử dụng jQuery. .textContent đưa cho chúng tôi textContent của phần tử dom đó. Với .length, chúng tôi có thể xem liệu có bất kỳ nhân vật nào có mặt hay không. Vì vậy, vùng văn bản trống trong trường hợp không có ký tự bên trong.

+0

.text() không phải là hàm – mghaoui

+0

@mghaoui: thx, sửa lỗi – Thariama

+0

Bạn có thể vui lòng sửa trong phần giải thích tại sao mã này trả lời câu hỏi? Các câu trả lời chỉ có mã không được khuyến khích, bởi vì chúng không dạy giải pháp. – Scimonster

1

Đây là mã làm việc của tôi

function emptyTextAreaCheck(textarea, submitButtonClass) { 
     if(!submitButtonClass) 
      submitButtonClass = ".transSubmit"; 

      if($(textarea).val() == '') { 
       $(submitButtonClass).addClass('disabled_button'); 
       $(submitButtonClass).removeClass('transSubmit'); 
      } 

     $(textarea).live('focus keydown keyup', function(){ 
      if($(this).val().length == 0) { 
       $(submitButtonClass).addClass('disabled_button'); 
       $(submitButtonClass).removeClass('transSubmit'); 
      } else { 
       $('.disabled_button').addClass('transSubmit').css({ 
        'cursor':'pointer' 
       }).removeClass('disabled_button'); 
      } 
     }); 
    } 
+1

Sẽ không dán, cắt, thả, v.v. Hãy thử [plugin của tôi] (http://whattheheadsaid.com/projects/input-special-event) để có giải pháp tốt hơn. –

+0

Cảm ơn người đàn ông gợi ý trợ giúp! Tôi sẽ xem xét plugin này ... trông giống như một giải pháp tốt hơn nhiều so với những gì tôi đang làm – dennismonsewicz

+0

Liên kết @AndyE cung cấp đã chết. –

0

Andy E của câu trả lời đã giúp tôi có được cách chính xác để làm việc cho tôi:

$.each(["input[type=text][value=]", "textarea"], function (index, element) { 
if (!$(element).val() || !$(element).text()) { 
$(element).css("background-color", "rgba(255,227,3, 0.2)"); 
} 
}); 

này !$(element).val() không bắt một textarea trống cho tôi. nhưng toàn bộ tiếng nổ (!) đã hoạt động khi kết hợp với văn bản.

0
$.each(["input[type=text][value=]", "textarea[value=]"], function (index, element) { 
       //only empty input and textarea will come here 
}); 
+0

textarea [value =] không hoạt động đối với tôi (chrome) –

3

tôi biết bạn là quá khứ từ lâu nhận được một giải pháp. Vì vậy, điều này là dành cho những người khác đến để xem cách người khác đang giải quyết cùng một vấn đề phổ biến-- như tôi.

Các ví dụ trong câu hỏi và câu trả lời cho biết việc sử dụng jQuery và tôi đang sử dụng trình xử lý .change/handler/bất cứ điều gì để xem liệu văn bản của tôi có thay đổi hay không. Điều này sẽ giải quyết các thay đổi văn bản thủ công, thay đổi văn bản tự động, v.v. để kích hoạt

//pseudocode 
$(document).ready(function() { 
    $('#textarea').change(function() { 
     if ($.trim($('#textarea').val()).length < 1) { 

      $('#output').html('Someway your box is being reported as empty... sadness.'); 

     } else { 

      $('#output').html('Your users managed to put something in the box!'); 
      //No guarantee it isn't mindless gibberish, sorry. 

     } 
    }); 
}); 

Dường như hoạt động trên tất cả các trình duyệt tôi sử dụng. http://jsfiddle.net/Q3LW6/

Mới hơn, ví dụ kỹ lưỡng hơn:https://jsfiddle.net/BradChesney79/tjj6338a/

Sử dụng và báo cáo .change(), .blur(), .keydown(), .keyup(), .mousedown(), .mouseup() , .click(), mouseleave() và .setInterval().

0
if(!$('element').val()) { 
    // code 
} 
Các vấn đề liên quan