2010-10-27 46 views
7

Tôi muốn kiểm tra xem hộp kiểm có được kiểm tra hay không bằng cách sử dụng jquery. Tôi muốn kiểm tra nó trên sự kiện onclick của hộp kiểm.kiểm tra xem hộp kiểm có được chọn hay không bằng cách sử dụng jquery

<input type="checkbox" onclick="javascript:check_action();" id="Public(Web)" checked="checked" value="anyone" name="data[anyone]"> 

Có thể không? Làm sao?

Cảm ơn.

+1

Không sử dụng 'javascript:' trong thuộc tính trình xử lý sự kiện. Nó sai và chỉ hoạt động vì nó là cú pháp JavaScript hợp lệ. –

+0

id = "Công khai (Web)" không phải là tên id hợp lệ. Mã thông báo ID và NAME phải bắt đầu bằng một chữ cái ([A-Za-z]) và có thể được theo sau bởi bất kỳ số chữ cái, chữ số ([0-9]), dấu gạch nối ("-"), dấu gạch dưới ("_") , dấu hai chấm (":") và dấu chấm ("."). –

+1

@FutureKode: Trong HTML 4, có. Trong HTML 5, không. Nhưng trong tương lai gần, bạn hoàn toàn đúng –

Trả lời

8

Trước tiên, không sử dụng javascript: trong thuộc tính trình xử lý sự kiện. Nó sai và chỉ hoạt động vì nó là cú pháp JavaScript hợp lệ. Thứ hai, id của bạn không hợp lệ. Dấu ngoặc đơn không được phép trong thuộc tính id (ít nhất trong HTML 4; HTML 5 nâng giới hạn này). Thứ ba, nếu bạn đang sử dụng jQuery, bạn có thể sử dụng phương thức click() để xử lý sự kiện click, mặc dù việc thay đổi nó sẽ có nghĩa là nếu người dùng nhấp vào hộp kiểm trước khi tài liệu được tải thì tập lệnh của bạn sẽ không xử lý nó.

<input type="checkbox" id="Public_Web" checked value="anyone" 
    name="data[anyone]"> 

$(document).ready(function() { 
    $("#Public_Web").click(function() { 
     if (this.checked) { 
      alert("Checked!"); 
     } 
    }); 
}); 
+0

Hey, điều này có hiệu quả. Cảm ơn vì điều tốt đẹp này. Cảm ơn tất cả những ai đã trả lời câu hỏi này. – gautamlakum

4

Bạn có thể làm như

$('#checkbox_id').click(function(){ 
    alert(this.checked); 
}); 

Hoặc sử dụng is() phương pháp này:

$('#checkbox_id').click(function(){ 
    if ($(this).is(':checked')){ 
    alert('Checked'); 
    } 
    else{ 
    alert('Not Checked'); 
    } 
}); 

Nếu bạn muốn làm điều này cho tất cả các hộp kiểm bên trong một biểu mẫu, bạn có thể sử dụng bộ chọn :checkbox lọc như thế này :

$('#form_id :checkbox').click(function(){ 
    alert(this.checked); 
}); 

Đảm bảo mã của bạn đã sẵn sàng handler:

$(function(){ 
    // code.... 
}); 
+0

Tôi đã thử điều này. nhưng nó không hiệu quả. – gautamlakum

1

Thứ nhất, ràng buộc sự kiện trong thẻ tập lệnh chứ không phải nội dòng. Điều này dễ làm theo và làm cho HTML của bạn dễ đọc hơn nhiều. Sau đó, bạn có thể sử dụng bộ chọn jQuery :checked để xác định xem hộp kiểm có được chọn hay không. Sau đó, bạn có thể sử dụng thuộc tính checked của phần tử.

$(document).ready(function(){ 
    $('#Public(Web)').click(function(){ 
     if (this.checked) { 
      // do your code here 
     } 
    }); 
}); 
+1

Nghiêm túc, không. Để kiểm tra xem một hộp kiểm có được chọn hay không, '$ (this) .is (': checked')' đơn giản là điên rồ. 'this.checked' tốt hơn trong mọi ý nghĩa có thể hiểu được. –

+0

Có. Tha thứ cho tôi, các vị thần JS, vì tôi đã phạm tội ... – lonesomeday

+0

Sarcasm, tôi giả sử? '$ (this) .is (': checked')' là một peeve thú cưng của tôi, như là một triệu chứng của những gì nó đại diện. Tôi có cần phải xây dựng? –

0

Dưới đây là một ví dụ, thông báo thay vì sử dụng một sự kiện onClick trong Element bản thân tôi muốn sử dụng một người biết lắng nghe, nhưng loại bỏ các dấu ngoặc từ id, Nó sẽ cung cấp cho bạn một thời gian khó khăn trong một số trình duyệt.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html><head> 
<input type="checkbox" id="PublicWeb" checked="checked" value="anyone" name="data[anyone]" /> 
<script type='text/javascript' src='http://code.jquery.com/jquery-latest.min.js'></script> 
<script> 
$(document).ready(function(){ 
    $('#PublicWeb').click(function(){ 
     if($(this).is(':checked')){ 
      alert("its checked alright"); 
     } 
    }); 
}); 
</script> 
</head><body></body></html> 
8

Bạn cũng có thể sử dụng này

if($("#checkbox_id").is(':checked')) 
2

Có vài tùy chọn là có thích ....

1. if($("#ans").is('checked')) 
2. if($("#ans:checked")) 
3. if($('input:checkbox:checked')) 
1

Hãy thử này:

if(!$('#elementid').is(':checked')){ 
    alert('Not checked'); 
}else{ 
    alert('checked'); 
} 
1

Bạn có thể làm điều này bằng is() phương pháp:

$('##Public_Web').click(function(){ 
    if ($(this).is(':checked')){ 
    alert('Checked'); 
    } 
    else{ 
    alert('Not Checked'); 
    } 
}); 

Nếu bạn muốn làm điều này cho tất cả các hộp kiểm bên trong một biểu mẫu, bạn có thể sử dụng :checkbox bộ chọn bộ lọc:

$('#form_id :checkbox').click(function(){ 
    alert(this.checked); 
}); 

Đảm bảo bao bọc mã của bạn trong trình xử lý sẵn sàng tài liệu:

$(document).ready(function() { 
     // code.... 
    }); 
Các vấn đề liên quan