Nhận giá trị hộp kiểm trong jQuery


534

Làm cách nào tôi có thể nhận được giá trị của hộp kiểm trong jQuery?

Câu trả lời:


1061

Để có được giá trị của thuộc tính Value, bạn có thể làm như thế này:

$("input[type='checkbox']").val();

Hoặc nếu bạn đã đặt classhoặc idcho nó, bạn có thể:

$('#check_id').val();
$('.check_class').val();

Tuy nhiên, điều này sẽ trả về cùng một giá trị cho dù nó có được kiểm tra hay không, điều này có thể gây nhầm lẫn vì nó khác với hành vi biểu mẫu đã gửi.

Để kiểm tra xem nó có được kiểm tra hay không, hãy làm:

if ($('#check_id').is(":checked"))
{
  // it is checked
}

3
Ví dụ đầu tiên làm gì nếu có nhiều hộp kiểm trên trang? Btw, nó có thể được viết theo cách ngắn hơn $("input:checkbox"). Ngoài ra, dường như có một lỗi đánh máy trong bộ chọn lớp ...
Jawa

1
@Jawa: Cái đầu tiên chỉ là một ví dụ để hiển thị cú pháp và cảm ơn vì lỗi đánh máy đó.
Sarfraz

136
Nếu tôi thử $($0).val()trong Chrome và bỏ chọn hộp kiểm, câu trả lời là "bật" mặc dù nó không được đánh dấu. Nhưng $($0).is(":checked")trả về đúng giá trị.
Adrien

2
@Jawa Per api.jquery.com/checkbox-selector [type="checkbox"] có hiệu suất tốt hơn trong các trình duyệt hiện đại hơn :checkbox.
TrueWill

3
Thay thế $('#check_id').val();để $('#check_id').is(":checked");trả về giá trị đúng hoặc sai.
Matheus Miranda

228

2 cách này đang hoạt động:

  • $('#checkbox').prop('checked')
  • $('#checkbox').is(':checked')(cảm ơn @mgsloan)

$('#test').click(function() {
    alert("Checkbox state (method 1) = " + $('#test').prop('checked'));
    alert("Checkbox state (method 2) = " + $('#test').is(':checked'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
Check me: <input id="test" type="checkbox" />


9
.is ('đã kiểm tra') không hoạt động vì nó phải là .is (': đã kiểm tra')
mgsloan

Cảm ơn bạn vì câu trả lời. Đây là một câu trả lời hiện đại với hàm jQuery prop ()
Thomas.Benz

58

Hãy thử giải pháp nhỏ này:

$("#some_id").attr("checked") ? 1 : 0;

hoặc là

$("#some_id").attr("checked") || 0;

Hoặc !! ($ ("# some_id"). Attr ("đã kiểm tra"))
COOLGAMETUBE

34

Các cách chính xác duy nhất để truy xuất giá trị của hộp kiểm tra như sau

if ( elem.checked ) 
if ( $( elem ).prop( "checked" ) ) 
if ( $( elem ).is( ":checked" ) ) 

như được giải thích trong các tài liệu chính thức trong trang web của jQuery. Các phương thức còn lại không liên quan gì đến thuộc tính của hộp kiểm, chúng đang kiểm tra thuộc tính có nghĩa là chúng đang kiểm tra trạng thái ban đầu của hộp kiểm khi nó được tải. Vì vậy, trong ngắn hạn:

  • Khi bạn có phần tử và bạn biết đó là một hộp kiểm, bạn chỉ cần đọc thuộc tính của nó và bạn sẽ không cần jQuery cho điều đó (tức là elem.checked) hoặc bạn có thể sử dụng $(elem).prop("checked")nếu bạn muốn dựa vào jQuery.
  • Nếu bạn cần biết (hoặc so sánh) giá trị khi phần tử được tải lần đầu tiên (tức là giá trị mặc định), cách chính xác để làm điều đó là $(elem).is(":checked").

Câu trả lời sai lệch, vui lòng kiểm tra bên dưới:

http://api.jquery.com/prop/


.is(":checked").prop(":checked")đang làm việc tương tự với tôi w / jQuery 1.10.0
Josh

23

Chỉ cần làm rõ mọi chuyện:

$('#checkbox_ID').is(":checked")

Sẽ trả về 'true' hoặc 'false'


14
$('#checkbox_id').val();
$('#checkbox_id').is(":checked");
$('#checkbox_id:checked').val();

không hoạt động. bạn có thể cần một cột trước khi được chọn ': đã kiểm tra'
hữu íchBee

9
.val () không hoạt động. Trả về 'trên' bất kể đã chọn.
Michael Cole

11
jQuery(".checkboxClass").click(function(){
        var selectedCountry = new Array();
        var n = jQuery(".checkboxClass:checked").length;
        if (n > 0){
            jQuery(".checkboxClass:checked").each(function(){
                selectedCountry.push($(this).val());
            });
        }
        alert(selectedCountry);
    });

10

Đơn giản nhưng hiệu quả và giả sử bạn biết hộp kiểm sẽ được tìm thấy:

$("#some_id")[0].checked;

Tặng true/false


9
//By each()
var testval = [];
 $('.hobbies_class:checked').each(function() {
   testval.push($(this).val());
 });


//by map()
var testval = $('input:checkbox:checked.hobbies_class').map(function(){
return this.value; }).get().join(",");

 //HTML Code

 <input type="checkbox" value="cricket" name="hobbies[]"  class="hobbies_class">Cricket 
  <input type="checkbox" value="hockey" name="hobbies[]" class="hobbies_class">Hockey

Ví dụ
Demo


5

Mặc dù thực tế rằng câu hỏi này đang yêu cầu một giải pháp jQuery, đây là một câu trả lời thuần túy vì không ai đề cập đến nó.

Không có jQuery:

Đơn giản chỉ cần chọn phần tử và truy cập thuộc checkedtính (trả về boolean).

var checkbox = document.querySelector('input[type="checkbox"]');

alert(checkbox.checked);
<input type="checkbox"/>


Dưới đây là một ví dụ nhanh chóng nghe changesự kiện này:

var checkbox = document.querySelector('input[type="checkbox"]');
checkbox.addEventListener('change', function (e) {
    alert(this.checked);
});
<input type="checkbox"/>


Để chọn các phần tử được kiểm tra, sử dụng :checkedlớp giả (input[type="checkbox"]:checked ).

Dưới đây là một ví dụ lặp lại inputcác phần tử được kiểm tra và trả về một mảng được ánh xạ của tên của phần tử được kiểm tra.

Ví dụ ở đây

var elements = document.querySelectorAll('input[type="checkbox"]:checked');
var checkedElements = Array.prototype.map.call(elements, function (el, i) {
    return el.name;
});

console.log(checkedElements);


1
Điều này không trả lời câu hỏi.
Michael Cole

@MichaelCole - Tôi vừa đọc lại câu hỏi (3 năm sau) và có vẻ như điều này thực sự trả lời câu hỏi, vì vậy hãy giải thích.
Josh Crozier

1
"Làm cách nào tôi có thể nhận được giá trị của hộp kiểm trong jQuery?" -> "Mặc dù thực tế là câu hỏi này đang yêu cầu một giải pháp jQuery ... blah blah blah". Đó là một câu trả lời hộp xà phòng, theo cách của các câu trả lời thực tế khác, và đó là lý do tại sao tôi đánh giá thấp nó.
Michael Cole

1
@MichaelCole - Đủ công bằng, phản hồi luôn được đánh giá cao. Mục đích ban đầu của câu trả lời này là chỉ ra rằng jQuery có thể tránh được trong các trường hợp tầm thường như thế này khi thuộc checkedtính có thể truy cập dễ dàng trên phần tử DOM gốc. Một số người tìm kiếm câu hỏi / câu trả lời như thế này thường không biết thực tế rằng jQuery đôi khi không cần thiết. Nói cách khác, những người có đầu óc hẹp hòi không phải là nhân khẩu học mục tiêu cho câu trả lời này.
Josh Crozier

2

Dưới đây là cách lấy giá trị của tất cả các hộp kiểm tra dưới dạng một mảng:

var values = (function() {
                var a = [];
                $(".checkboxes:checked").each(function() {
                    a.push(this.value);
                });
                return a;
            })()

2

để lấy giá trị của hộp kiểm tra trong jquery:

var checks = $("input[type='checkbox']:checked"); // returns object of checkeds.

for(var i=0; i<checks.length; i++){
    console.log($(checks[i]).val()); // or do what you want
});

trong pure js:

var checks = document.querySelectorAll("input[type='checkbox']:checked");

for(var i=0; i<checks.length; i++){
    console.log(checks[i].value); // or do what you want
});


0
$('.class[value=3]').prop('checked', true);

1
Câu hỏi là hỏi làm thế nào để có được giá trị chứ không phải làm thế nào để kiểm tra một cái gì đó với một giá trị mặc định cụ thể.
Quentin

0

Cách tốt nhất là $('input[name="line"]:checked').val()

Và bạn cũng có thể nhận được văn bản đã chọn $('input[name="line"]:checked').text()

Thêm thuộc tính giá trị và tên vào đầu vào nút radio của bạn. Hãy chắc chắn rằng tất cả các đầu vào có cùng thuộc tính tên.

<div class="col-8 m-radio-inline">
    <label class="m-radio m-radio-filter">
        <input type="radio" name="line" value="1" checked> Value Text 1
    </label>
    <label class="m-radio m-radio-filter">
        <input type="radio" name="line" value="2"> Value Text 2
    </label>
    <label class="m-radio m-radio-filter">
        <input type="radio" name="line" value="3"> Value Text 3
    </label>
</div>

-1
<script type="text/javascript">
$(document).ready(function(){
    $('.laravel').click(function(){
        var val = $(this).is(":checked");
        $('#category').submit();
    });
});

<form action="{{route('directory')}}" method="post" id="category">
                        <input type="hidden" name="_token" value="{{ csrf_token() }}">
                        <input name="category" value="{{$name->id}}"  class="laravel" type="checkbox">{{$name->name}}
                      </form>

-1

Chỉ cần chú ý, như ngày hôm nay, 2018, do api thay đổi qua các năm. removeAttr bị lỗi, KHÔNG làm việc nữa!

Kiểm tra Jquery hoặc bỏ chọn hộp kiểm:

Xấu, không làm việc nữa.

   $('#add_user_certificate_checkbox').removeAttr("checked");

   $('#add_user_certificate_checkbox').attr("checked","checked");

Thay vào đó bạn nên làm:

      $('#add_user_certificate_checkbox').prop('checked', true);
      $('#add_user_certificate_checkbox').prop('checked', false);
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.