การใช้ jquery เพื่อรับช่องทำเครื่องหมายที่เลือกทั้งหมดด้วยชื่อคลาสที่แน่นอน


215

ฉันรู้ว่าฉันจะได้รับช่องทำเครื่องหมายทั้งหมดในหน้าโดยใช้สิ่งนี้:

$('input[type=checkbox]').each(function () {
    var sThisVal = (this.checked ? $(this).val() : "");
});

แต่ตอนนี้ฉันใช้สิ่งนี้ในหน้าเว็บที่มีช่องทำเครื่องหมายอื่นที่ฉันไม่ต้องการรวม ฉันจะเปลี่ยนรหัสด้านบนเพื่อดูเฉพาะช่องทำเครื่องหมายที่มีคลาสได้อย่างไร


ฉันจะอัปเดตชื่อเป็นพูดclassแทนได้nameหรือไม่
Russ Cam

@Russ Cam - เรียบร้อยแล้ว
leora

$ ('input [type = checkbox] :checked') จะทำงานเช่นกัน
สุดยอด

คำตอบ:


392

$('.theClass:checkbox:checked')theClassจะให้คุณทุกช่องทำเครื่องหมายการตรวจสอบกับการเรียน


9
ดี นอกจากนี้ $ ('.Class: ช่องทำเครื่องหมาย: ไม่ (ตรวจสอบแล้ว)') จะได้รับสิ่งที่ไม่ถูกเลือกทั้งหมด
Venugopal M

ฉันสามารถทำสิ่งนี้กับช่องทำเครื่องหมายที่มีชื่อทั้งหมดได้หรือไม่
FluffyBeing

ฉันจะเพิ่มคลาสอื่นในองค์ประกอบที่เลือกได้อย่างไร ฉันต้องการแสดงเส้นขอบบนองค์ประกอบอินพุตที่ตรวจสอบแล้ว
Najam Us Saqib

120
$('input:checkbox.class').each(function () {
       var sThisVal = (this.checked ? $(this).val() : "");
  });

ตัวอย่างที่แสดงให้เห็น

:checkboxเป็นตัวเลือกสำหรับช่องทำเครื่องหมาย (ในความเป็นจริงคุณสามารถละเว้นinputส่วนของตัวเลือกได้แม้ว่าฉันจะพบกรณีเฉพาะที่คุณจะได้รับผลลัพธ์ที่แปลกในการทำเช่นนี้ในห้องสมุดรุ่นก่อนหน้า เป็นตัวเลือกสำหรับแอตทริบิวต์ระดับองค์ประกอบที่มี.classclass


9
บันทึก Jquery เมื่อ: ช่องทำเครื่องหมายแนะนำให้ติดกับ [type = "ช่องทำเครื่องหมาย"] $ ('[type = "checkbox"]. class') .... หรือ $ ('input [type = "checkbox"]. class')
TSmith

@TS คุณมีข้อมูลอ้างอิงหรือไม่
Russ Cam

9
ฉันอ่านมันจากที่นี่: api.jquery.com/checkbox-selector ... ภายใต้ "หมายเหตุเพิ่มเติม"
TSmith

73

บังคับ.mapเช่น:

var checkedVals = $('.theClass:checkbox:checked').map(function() {
    return this.value;
}).get();
alert(checkedVals.join(","));

3
$ ('input.theClass: checked'). map (ฟังก์ชั่น () {return this.value}). รับ (). เข้าร่วม (',');
Fedir RYKHTIK

@Fedir: คำสั่งของคุณให้on,onเป็นผล ( 'ที่' ทุกช่องทำเครื่องหมายตรวจสอบ)
เจย์

@Jay คุณต้องตั้งค่าคุณลักษณะของกล่องกาเครื่องหมายเพื่อรับค่าในสตริงที่คั่นด้วยอาการโคม่า
Kamran Ali

21
$('input.yourClass:checkbox:checked').each(function () {
    var sThisVal = $(this).val();
});

นี่จะเป็นช่องทำเครื่องหมายทั้งหมดของชื่อคลาส "yourClass" ฉันชอบตัวอย่างนี้เนื่องจากใช้ตัวเลือก jQuery ที่เลือกแทนการตรวจสอบแบบมีเงื่อนไข ส่วนตัวฉันจะใช้อาร์เรย์เพื่อเก็บค่าจากนั้นใช้พวกเขาตามต้องการเช่น:

var arr = [];
$('input.yourClass:checkbox:checked').each(function () {
    arr.push($(this).val());
});

หากมีความจำเป็นต้องเก็บค่าไว้ในอาร์เรย์.mapอาจเป็นทางเลือกที่น่าพอใจมากขึ้นดังที่คำตอบของ karim79 แสดง
duplode

1
ขอบคุณ :) ฉันต้องการค้นหาช่องทำเครื่องหมายที่เลือกทั้งหมดและคำตอบของคุณทำเช่นนั้น
ufk

13

หากคุณต้องการรับค่าของช่องทำเครื่องหมายที่เลือกทั้งหมดเป็นอาร์เรย์:

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


8

ฉันไม่แน่ใจว่าจะช่วยคุณได้หรือไม่และในกรณีของคุณช่องทำเครื่องหมายที่คุณต้องการรวมนั้นเป็นเพียงส่วนหนึ่งของแบบฟอร์มเดียวหรือ div หรือตาราง แต่คุณสามารถเลือกช่องทำเครื่องหมายทั้งหมดได้เสมอ ภายในองค์ประกอบที่เฉพาะเจาะจง ตัวอย่างเช่น:

<ul id="selective">
 <li><input type="checkbox" value="..." /></li>
 <li><input type="checkbox" value="..." /></li>
 <li><input type="checkbox" value="..." /></li>
 <li><input type="checkbox" value="..." /></li>
</ul>

จากนั้นใช้ jQuery ต่อไปนี้เท่านั้นจะต้องผ่านช่องทำเครื่องหมายภายใน UL นั้นพร้อมกับ id = "selective":

$('#selective input:checkbox').each(function () {
 var sThisVal = (this.checked ? $(this).val() : "");
});


7

คุณสามารถใช้สิ่งนี้:
HTML:

<div><input class="yourClass" type="checkbox" value="1" checked></div>
<div><input class="yourClass" type="checkbox" value="2"></div>
<div><input class="yourClass" type="checkbox" value="3" checked></div>
<div><input class="yourClass" type="checkbox" value="4"></div>


JQuery:

$(".yourClass:checkbox").filter(":checked")


มันจะเลือกค่า 1 และ 3


นี่คือคำตอบที่ดีที่สุด
Marcos Buarque

7

วิธีง่ายๆในการรับค่าทั้งหมดลงในอาร์เรย์

var valores = (function () {
    var valor = [];
    $('input.className[type=checkbox]').each(function () {
        if (this.checked)
            valor.push($(this).val());
    });
    return valor;

})();

console.log(valores);

7

คุณสามารถลองสิ่งนี้

let values = (function() {
                let a = [];
                $(".chkboxes:checked").each(function() {
                    a.push($(this).val());
                });
                return a;
            })();

4
<input type="checkbox" id="Checkbox1" class = "chk" value = "1" />
<input type="checkbox" id="Checkbox2" class = "chk" value = "2" />
<input type="checkbox" id="Checkbox3" class = "chk" value = "3" />
<input type="checkbox" id="Checkbox4" class = "chk" value = "4" />
<input type="button" id="demo" value = "Demo" />

<script type = "text/javascript" src = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.1.min.js"></script>
<script type="text/javascript">
    $("#demo").live("click", function () {
        $("input:checkbox[class=chk]:checked").each(function () {
            alert("Id: " + $(this).attr("id") + " Value: " + $(this).val());
        });
    });
</script>

http://www.jqueryfaqs.com/Articles/Get-values-of-all-checked-checkboxes-by-class-name-using-jQuery.aspx


3

ฉันรู้ว่านี่มีคำตอบมากมายสำหรับคำถามนี้ แต่ฉันพบสิ่งนี้ในขณะที่ท่องไปรอบ ๆ และฉันคิดว่ามันใช้งานง่ายมาก คิดว่าฉันจะแบ่งปันให้คนอื่นที่กำลังมองหา

HTML:

<fieldset>
    <!-- these will be affected by check all -->
    <div><input type="checkbox" class="checkall"> Check all</div>
    <div><input type="checkbox"> Checkbox</div>
    <div><input type="checkbox"> Checkbox</div>
    <div><input type="checkbox"> Checkbox</div>
</fieldset>
<fieldset>
    <!-- these won't be affected by check all; different field set -->
    <div><input type="checkbox"> Checkbox</div>
    <div><input type="checkbox"> Checkbox</div>
    <div><input type="checkbox"> Checkbox</div>
</fieldset>

jQuery:

$(function () {
    $('.checkall').on('click', function () {
        $(this).closest('fieldset').find(':checkbox').prop('checked', this.checked);
    });
});

การอ้างอิง: ง่ายที่สุด "ตรวจสอบทั้งหมด" ด้วย jQuery


1
$(document).ready(function(){
    $('input.checkD[type="checkbox"]').click(function(){
        if($(this).prop("checked") == true){
            $(this).val('true');
        }
        else if($(this).prop("checked") == false){
            $(this).val('false');
        }
    });
});

โปรดพิจารณาเพิ่มความคิดเห็นเพื่ออธิบายคำตอบของคุณเพื่อให้เข้าใจง่ายสำหรับผู้ที่ไม่ได้ฝึกหัด
Simas Joneliunas

-1
$("input[name='<your_name_of_selected_group_checkboxes>']:checked").val()

1
โปรดอธิบายว่ารหัสนี้เกี่ยวกับอะไร มันจะช่วยให้ผู้อื่นเข้าใจ
Shafin Mahmud
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.