การทดสอบว่าทำเครื่องหมายในช่องทำเครื่องหมายด้วย jQuery


588

หากทำเครื่องหมายที่ช่องทำเครื่องหมายฉันจะต้องรับค่าเป็น 1 เท่านั้น มิฉะนั้นฉันต้องได้มันเป็น 0 ฉันจะใช้ jQuery ได้อย่างไร

$("#ans").val() จะให้สิทธิ์ฉันเสมอในกรณีนี้:

<input type="checkbox" id="ans" value="1" />

2
.val () คือการรับค่าคุณลักษณะไม่ใช่สถานะการตรวจสอบ แอตทริบิวต์ value สามารถเป็นอะไรก็ได้โดยไม่จำเป็นต้องเป็นบูลีน
Pablo Pazos

หากคุณยังอยู่ใกล้คุณอาจต้องการอัปเดตคำตอบที่ยอมรับสำหรับซอฟต์แวร์ที่ทันสมัย ​​... ผู้คนจำนวนมากยังคงเห็นคำถามนี้
xaxxon

คำตอบ:


1008

ใช้.is(':checked')เพื่อตรวจสอบว่ามีการตรวจสอบหรือไม่แล้วตั้งค่าของคุณตามนั้น

ข้อมูลเพิ่มเติมที่นี่


1
นอกจากนี้เมื่อคุณทำ $ ("# id"). เป็น ("ตรวจสอบ") ในประโยคถ้าคุณจะได้รับจริงหรือเท็จไม่เปิด / ปิดโดยกลับมาและคุณสามารถส่งไปที่สคริปต์สิ้นหลังของคุณ และทำสิ่งที่คุณต้องการ
Zanoldor

1
อาจเป็นไปได้ว่าสิ่งนี้ไม่สำคัญในปัจจุบัน: ReSharper (ฉันเดา) เอาท์พุทคำเตือน " การตรวจสอบคลาสหลอก" ตรวจสอบ "ไม่เข้ากันกับ Internet Explorer 8.0 "
Uwe Keim

211
$("#ans").attr('checked') 

จะแจ้งให้คุณทราบหากมีการตรวจสอบ นอกจากนี้คุณยังสามารถใช้พารามิเตอร์ตัวที่สองเป็น true / false เพื่อตรวจสอบ / ยกเลิกการเลือกช่องทำเครื่องหมาย

$("#ans").attr('checked', true);

ตามความคิดเห็นใช้propแทนattrเมื่อมี เช่น:

$("#ans").prop('checked')


56
// use ternary operators
$("#ans").is(':checked') ? 1 : 0;

@Loic เพื่อตั้งค่าของเขาโดยใช้ไวยากรณ์ ternary terse เช่น:: a = ischecked? 1: 0

21

คำตอบของ Stefan Brinkmann นั้นยอดเยี่ยม แต่ไม่สมบูรณ์สำหรับผู้เริ่มต้น (ละเว้นการกำหนดตัวแปร) เพียงชี้แจง:

// this structure is called a ternary operator
var cbAns = ( $("#ans").is(':checked') ) ? 1 : 0;

มันได้ผลเช่นนี้:

 var myVar = ( if test goes here ) ? 'ans if yes' : 'ans if no' ;

ตัวอย่าง:

var myMath = ( 1 > 2 ) ? 'yes' : 'no' ;
alert( myMath );

การแจ้งเตือน 'ไม่'

หากสิ่งนี้มีประโยชน์โปรดโหวตคำตอบของ Stefan Brinkmann



15

ฉันพบปัญหาเดียวกันก่อนหน้านี้หวังว่าโซลูชันนี้จะช่วยคุณได้ ก่อนอื่นให้เพิ่มแอตทริบิวต์ที่กำหนดเองลงในช่องทำเครื่องหมายของคุณ:

<input type="checkbox" id="ans" value="1" data-unchecked="0" />

เขียนนามสกุล jQuery เพื่อรับค่า:

$.fn.realVal = function(){
    var $obj = $(this);
    var val = $obj.val();
    var type = $obj.attr('type');
    if (type && type==='checkbox') {
        var un_val = $obj.attr('data-unchecked');
        if (typeof un_val==='undefined') un_val = '';
        return $obj.prop('checked') ? val : un_val;
    } else {
        return val;
    }
};

ใช้รหัสเพื่อรับค่ากล่องกาเครื่องหมาย:

$('#ans').realVal();

คุณสามารถทดสอบได้ที่นี่


10
... เพราะ jQuery เป็นที่รู้จักกันในนาม "
ไลบรารี่ที่

เรื่องราวยาว ๆ ที่คุณได้ไปไกล JQUERY ต้องการให้นักพัฒนาเขียนน้อยลงและทำเพิ่มเติมได้อีก ปัญหาง่ายสมควรได้รับวิธีแก้ปัญหาที่ง่าย
ShapCyber

ใช่เห็นด้วยเขียนน้อยลงทำมากขึ้น คุณเขียนส่วนขยายหนึ่งครั้งและในช่วงเวลาที่เหลือคุณเรียก API $ (someradio) .realVal () คุณไม่จำเป็นต้องเขียนส่วนขยายหลาย ๆ ครั้ง
alphakevin

คุณไม่จำเป็นต้องเขียนส่วนขยายแม้แต่ครั้งเดียวอย่ากังวลไปหลาย ๆ ครั้ง! oo
Coz


7
<input type="checkbox" id="ans" value="1" />

Jquery: var test= $("#ans").is(':checked') และมันจะคืนจริงหรือเท็จ

ในการทำงานของคุณ:

$test =($request->get ( 'test' )== "true")? '1' : '0';


4

ใช้:

$("#ans option:selected").val()

หากยังไม่ได้เลือกส่วนแรกจะไม่คืนสิ่งใดเลยใช่ไหม
xaxxon

@Senthil, OP ไม่ได้ขอให้รับค่าของช่องทำเครื่องหมายที่เลือก แต่return 1ถ้ามันถูกเลือก
Om Shankar

4
function chkb(bool){
if(bool)
return 1;
return 0;
}

var statusNum=chkb($("#ans").is(':checked'));

สถานะตัวเลขจะเท่ากับ 1 หากทำเครื่องหมายที่ช่องทำเครื่องหมายและ 0 ถ้าไม่ได้ทำเครื่องหมาย

แก้ไข: คุณสามารถเพิ่ม DOM เข้ากับฟังก์ชันได้เช่นกัน

function chkb(el){
if(el.is(':checked'))
return 1;
return 0;
}

var statusNum=chkb($("#ans"));

4

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

var ansValue = $("#ans").prop('checked') ? $("#ans").val() : 0;

สิ่งนี้ใช้ได้ในกรณีของฉันบางทีอาจมีบางคนต้องการมัน

เมื่อฉันได้พยายาม.attr(':checked')มันกลับมาcheckedแต่ฉันต้องการค่าบูลีนและกลับค่าของแอตทริบิวต์.val()value


4

มีหลายตัวเลือกเช่น ....

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

หากตัวเลือกทั้งหมดเหล่านี้คืนค่าเป็นจริงคุณสามารถกำหนดค่าได้อย่างแน่นอน


คนแรกที่ควรจะเป็น (': ตรวจสอบ') ไม่ทำงานอย่างอื่น
Arie Livshin

2

ลองสิ่งนี้

$('input:checkbox:checked').click(function(){
    var val=(this).val(); // it will get value from checked checkbox;
})

ที่นี่การตั้งค่าสถานะเป็นจริงหากเลือกอย่างอื่นเป็นเท็จ

var flag=$('#ans').attr('checked');

อีกครั้งนี้จะทำให้ cheked

$('#ans').attr('checked',true);


0

คุณสามารถรับค่า (จริง / เท็จ) โดยทั้งสองวิธี

$("input[type='checkbox']").prop("checked");
$("input[type='checkbox']").is(":checked");

0

ก่อนตรวจสอบค่าการตรวจสอบ

$("#ans").find("checkbox").each(function(){
    if ($(this).prop('checked')==true){ 
    var id = $(this).val()
    }
});

ชุดอื่น0ค่า



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