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


4548

ฉันต้องตรวจสอบcheckedคุณสมบัติของช่องทำเครื่องหมายและดำเนินการตามคุณสมบัติที่ตรวจสอบโดยใช้ jQuery

ตัวอย่างเช่นหากทำเครื่องหมายในช่องอายุฉันต้องแสดงกล่องข้อความเพื่อป้อนอายุมิฉะนั้นซ่อนกล่องข้อความ

แต่รหัสต่อไปนี้จะคืนfalseค่าเริ่มต้น:

if ($('#isAgeSelected').attr('checked'))
{
    $("#txtAge").show();
}
else
{
    $("#txtAge").hide();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="checkbox" id="isAgeSelected"/>

<div id="txtAge" style="display:none">
Age is selected
</div>

ฉันจะค้นหาcheckedคุณสมบัติสำเร็จได้อย่างไร


14
$ ('# isAgeSelected') ส่งคืนคอลเลกชันแทนที่ด้วย: $ ('# isAgeSelected') [0]
.checked

14
ทำไมไม่$('#isAgeSelected').checked
ดอนชีเดิล

1
สำหรับคำตอบที่ครอบคลุม (และถูกต้อง) โปรดดูที่: stackoverflow.com/questions/426258/…
Paul Kenjora

12
เนื่องจาก jQuery selectors ส่งคืนอาร์เรย์คุณสามารถใช้$('#isAgeSelected')[0].checked
Felipe Leão

2
สำหรับฉันปรับแต่งต่อไปนี้ทำงาน: แทนที่ .attr ('ตรวจสอบ') ด้วย. is (': ตรวจสอบ')
Mark N Hopgood

คำตอบ:


3432

ฉันจะสอบถามคุณสมบัติที่ตรวจสอบได้อย่างไร

checkedทรัพย์สินขององค์ประกอบ DOM ช่องทำเครื่องหมายที่จะทำให้คุณcheckedรัฐขององค์ประกอบ

ด้วยรหัสที่มีอยู่ของคุณคุณสามารถทำได้ดังนี้:

if(document.getElementById('isAgeSelected').checked) {
    $("#txtAge").show();
} else {
    $("#txtAge").hide();
}

อย่างไรก็ตามมีวิธีที่ดีกว่าในการทำเช่นนี้โดยใช้toggle:

$('#isAgeSelected').click(function() {
    $("#txtAge").toggle(this.checked);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="isAgeSelected"/>
<div id="txtAge" style="display:none">Age is something</div>


36
ฉันได้ลองเงื่อนไขดังกล่าวข้างต้นเกินไป แต่ก็กลับเท็จเท่านั้น
ปรา

24
. $ ( "# txtAge") สลับ (this.checked); ทำเช่นเดียวกันกับ $ ("# txtAge"). toggle () ดังนั้นหากด้วยเหตุผลบางอย่างสถานะจะถูกตรวจสอบและ div ถัดไปจะถูกซ่อน (คุณคลิกปุ่มย้อนกลับในเบราว์เซอร์ของคุณ) - มันจะไม่ทำงานตามที่คาดไว้
Maksim Vi

23
@Chiramisu - หากคุณได้อ่านคำตอบจนจบคุณจะสังเกตเห็นว่าการแก้ไขของฉันไม่ได้ใช้is(':checked')ธุรกิจ
karim79

8
เพื่อตั้ง: $ ("# chkmyElement") [0] .checked = true; ที่จะได้รับ: if ($ ("# chkmyElement") [0]
.checked

28
นี่ไม่ใช่คำตอบสำหรับคำถาม this.checkedไม่ใช่ jQuery ตามที่ OP ขอ นอกจากนี้ยังใช้งานได้เมื่อผู้ใช้คลิกที่ช่องทำเครื่องหมายซึ่งไม่ได้เป็นส่วนหนึ่งของคำถาม คำถามคืออีกครั้งHow to check whether a checkbox is checked in jQuery?ในเวลาที่กำหนดโดยมีหรือไม่มีการคลิกช่องทำเครื่องหมายและใน jQuery
Marc Compte

1846

ใช้ jQuery's is ()ฟังก์ชั่น:

if($("#isAgeSelected").is(':checked'))
    $("#txtAge").show();  // checked
else
    $("#txtAge").hide();  // unchecked

19
หากคุณไม่ต้องการเวลาผ่อนคลายและอื่น ๆ คุณสามารถใช้ $("#txtAge").toggle($("#isAgeSelected").is(':checked'))
na

13
+1 มีวิธีต่างๆในการตรวจสอบคุณสมบัติ บางส่วนอยู่ที่นี่
user3199690

@NickG จริง jQuery จะมี: ตัวเลือกที่มองเห็น
hvdd

2
@hvdd ฉันรู้ - ฉันพูดว่า "คุณสมบัติ" ไม่ใช่ตัวเลือก
NickG

@NickG ... ฉันไม่เข้าใจว่าคุณหมายถึงอะไร jQuery ไม่มี.visible"คุณสมบัติ" ( คุณสมบัติคุณหมายถึงวิธีการหรือไม่) เนื่องจากไม่มีองค์ประกอบ HTML ที่มีคุณสมบัติที่มองเห็นได้ พวกเขามีdisplay คุณสมบัติสไตล์และมันค่อนข้างซับซ้อนกว่าเปิด / ปิด
xDaizu

566

ใช้ jQuery> 1.6

<input type="checkbox" value="1" name="checkMeOut" id="checkMeOut" checked="checked" />

// traditional attr
$('#checkMeOut').attr('checked'); // "checked"
// new property method
$('#checkMeOut').prop('checked'); // true

การใช้วิธีการคุณสมบัติใหม่:

if($('#checkMeOut').prop('checked')) {
    // something when checked
} else {
    // something else when not
}

27
ฉันอยากจะรู้ว่าทำไมนี่ไม่ใช่คำตอบ ... ถ้าคุณใช้ jQuery เลย.propวิธีการนั้นเป็นวิธีที่ออกแบบมาเพื่อตรวจสอบอุปกรณ์ประกอบฉาก .. ... หากคุณกำลังจะทำ.is(":checked")วิธีการที่ดี แต่มันไม่ใช่วิธีที่ออกแบบมาเพื่อทำโดยใช้ jQuery ขวา?
dsdsdsdsd

1
@dsdsdsdsd น่าจะเป็นเพราะมันต้องการอีกขั้นตอนที่เข้ากันได้ย้อนหลัง (ตอนนี้ฉันกำลังเผชิญปัญหาเดียวกันอยู่)
user98085

18
.is(":checked")และ.prop("checked")ทั้งสองวิธีที่ถูกต้องในการรับผลลัพธ์เดียวกันใน jQuery .isจะทำงานในทุกรุ่น.propต้องการ 1.6+
gnarf

ถ้าคุณใช้.attr('checked')ใน jQuery 1.11.3 คุณจะไม่ได้กำหนดซึ่งถ้าคุณใช้.prop('checked')คุณจะได้รับจริง / เท็จ ฉันไม่เห็นว่าทำไมพวกเขาจึงเปลี่ยนเป็นวิธีนี้เมื่อเบราว์เซอร์รุ่นเก่าไม่สามารถรองรับรุ่น jQuery รุ่นใหม่กว่าที่แนะนำ.prop()และจำเป็นต้อง.attr()ใช้ สิ่งเดียวที่ช่วยในการประหยัดคือเบราว์เซอร์รุ่นเก่า (เช่น IE 8) ไม่สามารถรองรับอะไรก็ได้> jQuery 1.9 หวังว่าพวกเขาจะไม่ทำสิ่งนี้ (ทำ.attr('checked')= ไม่ได้กำหนด) ในเวอร์ชันนั้น! this.checkedโชคดีที่มีอยู่เสมอ
vapcguy

230

jQuery 1.6+

$('#isAgeSelected').prop('checked')

jQuery 1.5 และต่ำกว่า

$('#isAgeSelected').attr('checked')

jQuery ทุกรุ่น

// Assuming an event handler on a checkbox
if (this.checked)

เครดิตทั้งหมดไปที่ซีอาน


8
ในทางเทคนิคthis.checkedใช้ Javascript แบบตรง แต่ฉันชอบคำตอบข้ามรุ่น jQuery!
vapcguy

170

ฉันใช้สิ่งนี้และมันใช้งานได้ดีอย่างแน่นอน:

$("#checkkBoxId").attr("checked") ? alert("Checked") : alert("Unchecked");

หมายเหตุ: หากมีการทำเครื่องหมายที่ช่องทำเครื่องหมายมันจะคืนค่าเป็นจริงมิฉะนั้นจะไม่ได้กำหนดดังนั้นควรตรวจสอบค่า "TRUE" ให้ดีขึ้น


6
สิ่งนี้ทำงานได้เนื่องจาก $ ("# checkkBoxId"). attr ("checked") ส่งคืน "checked" หรือ "" (สตริงว่าง) และสตริงที่ว่างเปล่าเป็น falsy สตริงไม่ว่างเปล่าเป็น truthy ดูเกี่ยวกับ truthy / ค่า falsy docs.nodejitsu.com/articles/javascript-conventions/...
Adrien เป็น

7
โดย jquery 2.1.x จะส่งคืนการตรวจสอบเสมอหากมีการตรวจสอบโดยค่าเริ่มต้น ... ฉันไม่ทราบว่าพฤติกรรมนี้ตั้งใจหรือไม่ แต่แน่นอนว่ามันไม่ทำงาน (ฉันคิดว่ามันเป็นข้อผิดพลาด) ... ไม่ทำงานอย่างใดอย่างหนึ่งมันยังคง "เปิด" prop () ทำงานอย่างถูกต้องและ dom.checked ก็ใช้ได้เช่นกัน
inf3rno

1
และปัญหาเกิดขึ้นเมื่อคุณต้องสนับสนุนเบราว์เซอร์รุ่นเก่าด้วย.attr()! ถ้าเพียง แต่พวกเขาทิ้งให้อยู่คนเดียวดีพอ .... พบคำตอบอื่นที่นี่บอกว่าคุณสามารถใช้this.checkedสำหรับการแก้ปัญหาข้าม jQuery เพราะมันเป็นเพียง Javascript
vapcguy

.attr ('ทำเครื่องหมายไว้') จะทดสอบว่ามีการตรวจสอบโดยค่าเริ่มต้นใช่หรือไม่ เนื่องจากกำลังตรวจสอบแอตทริบิวต์ html ไม่ใช่สถานะปัจจุบัน รุ่นก่อนหน้านี้เป็นข้อผิดพลาด (แม้ว่าจะเป็นที่เอาเปรียบฉันเดา)
Jay Irvine

149

ใช้:

<input type="checkbox" name="planned_checked" checked id="planned_checked"> Planned

$("#planned_checked").change(function() {
    if($(this).prop('checked')) {
        alert("Checked Box Selected");
    } else {
        alert("Checked Box deselect");
    }
});

    $("#planned_checked").change(function() {
        if($(this).prop('checked')) {
            alert("Checked Box Selected");
        } else {
            alert("Checked Box deselect");
        }
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" name="planned_checked" checked id="planned_checked"> Planned


119

ตั้งแต่ jQuery 1.6 พฤติกรรมของjQuery.attr()มีการเปลี่ยนแปลงและผู้ใช้ควรไม่ใช้เพื่อเรียกคืนสถานะการตรวจสอบขององค์ประกอบ คุณควรใช้jQuery.prop():

$("#txtAge").toggle(
    $("#isAgeSelected").prop("checked") // For checked attribute it returns true/false;
                                        // Return value changes with checkbox state
);

ความเป็นไปได้อีกสองอย่างคือ:

$("#txtAge").get(0).checked
$("#txtAge").is(":checked")

และ $ ("# txtAge") [0] .checked
Yevgeniy Afanasyev

101

สิ่งนี้ใช้ได้กับฉัน:

$get("isAgeSelected ").checked == true

ที่ไหนisAgeSelectedเป็น ID ของตัวควบคุม

นอกจากนี้คำตอบของ @ karim79 ก็ใช้ได้ดีเช่นกัน ฉันไม่แน่ใจว่าสิ่งที่ฉันพลาดในขณะที่ฉันทดสอบมัน

หมายเหตุนี่คือคำตอบที่ใช้ Microsoft Ajax ไม่ใช่ jQuery


4
ในทุกกรณีในภาษาการเขียนโปรแกรมปกติคุณสามารถละเว้น== true
RedPixel

@RedPixel ยกเว้นว่าคุณกำลังจัดการกับประเภท nullable :) (ยิ้มอย่างอวดดี)
Kolob Canyon

88

หากคุณใช้ jquery รุ่นที่ปรับปรุงแล้วคุณต้องไปหา.propวิธีการแก้ไขปัญหาของคุณ:

$('#isAgeSelected').prop('checked')จะกลับมาถ้าทำเครื่องหมายtrueและfalseไม่ถูกตรวจสอบ ฉันยืนยันและพบปัญหานี้ก่อนหน้านี้ $('#isAgeSelected').attr('checked')และ$('#isAgeSelected').is('checked')กำลังกลับมาundefinedซึ่งไม่ใช่คำตอบที่สมควรสำหรับสถานการณ์ ดังนั้นทำตามที่ระบุไว้ด้านล่าง

if($('#isAgeSelected').prop('checked')) {
    $("#txtAge").show();
} else {
    $("#txtAge").hide();
}

หวังว่าจะช่วย:) - ขอบคุณ


ทำไมไม่$('#isAgeSelected').checked?
Don Cheadle

1
เพื่อใช้. คุณต้องใช้โคลอน $ ('# isAgeSelected'). คือ (': ถูกตรวจสอบ')
Patrick

62

การใช้Clickตัวจัดการเหตุการณ์สำหรับคุณสมบัติช่องทำเครื่องหมายไม่น่าเชื่อถือเนื่องจากcheckedคุณสมบัติสามารถเปลี่ยนแปลงได้ในระหว่างการดำเนินการของตัวจัดการเหตุการณ์!

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

$('#isAgeSelected').bind('change', function () {

   if ($(this).is(':checked'))
     $("#txtAge").show();
   else
     $("#txtAge").hide();
});

3
ในฐานะของ jQuery 1.7 .on()วิธีการเป็นวิธีที่ต้องการสำหรับการแนบตัวจัดการเหตุการณ์กับเอกสาร
naor

61

ใช้:

<input type="checkbox" id="abc" value="UDB">UDB
<input type="checkbox" id="abc" value="Prasad">Prasad
$('input#abc').click(function(){
  if($(this).is(':checked'))
  {
    var checkedOne=$(this).val()
    alert(checkedOne);

    // Do some other action
  }
})

วิธีนี้จะช่วยได้หากคุณต้องการให้การกระทำที่จำเป็นต้องทำก็ต่อเมื่อคุณทำเครื่องหมายในช่องไม่ใช่ในเวลาที่คุณเอาการตรวจสอบออก


53

ฉันตัดสินใจโพสต์คำตอบเกี่ยวกับวิธีการทำสิ่งเดียวกันโดยไม่ต้อง jQuery เพียงเพราะฉันเป็นกบฏ

var ageCheckbox = document.getElementById('isAgeSelected');
var ageInput = document.getElementById('txtAge');

// Just because of IE <333
ageCheckbox.onchange = function() {
    // Check if the checkbox is checked, and show/hide the text field.
    ageInput.hidden = this.checked ? false : true;
};

ก่อนอื่นคุณจะได้รับองค์ประกอบทั้งสองด้วยรหัสของพวกเขา จากนั้นคุณกำหนดonchangeกิจกรรมของช่องทำเครื่องหมายที่ตรวจสอบว่ามีการตรวจสอบกล่องกาเครื่องหมายและตั้งค่าhiddenคุณสมบัติของฟิลด์ข้อความอายุอย่างเหมาะสม ในตัวอย่างนั้นใช้ผู้ประกอบการที่สาม

นี่คือซอเพื่อให้คุณทดสอบ

ภาคผนวก

ถ้าเข้ากันได้ข้ามเบราว์เซอร์เป็นปัญหาแล้วผมเสนอให้ตั้งแบบ CSS displayคุณสมบัติเพื่อใครและอินไลน์

elem.style.display = this.checked ? 'inline' : 'none';

ช้าลง แต่ข้ามเบราว์เซอร์


ดี.hiddenไม่ได้เป็นอย่างเบราว์เซอร์แม้ว่าฉันชอบวิธีนี้ :)
Florian Margaine

styleมันย่อมเป็นวิธีที่ดีที่สุดที่จะใช้ นั่นคือแม้ว่าโชคร้ายขณะที่.hiddenผลการดำเนินงานเป็นวิธีที่ดีกว่า
Florian Margaine

การมอบหมายภายในโอเปอเรเตอร์ที่มีเงื่อนไข ถูกกฎหมายใช่ ไม่ใช่สิ่งที่ฉันเรียกว่าสไตล์ดี
จูลส์

สามารถลดความซับซ้อนของ: ageInput.hidden =! this.checked; (ฉันเกลียดเมื่อคนใช้ตัวอักษรบูลีนโดยไม่จำเป็น ... ถ้าคุณใช้ทั้ง "จริง" และ "เท็จ" ในคำสั่งง่ายๆเดียวกันมันอาจไม่จำเป็นที่จะใช้อย่างใดอย่างหนึ่ง)
JoelFan

52

ฉันเชื่อว่าคุณสามารถทำได้:

if ($('#isAgeSelected :checked').size() > 0)
{
    $("#txtAge").show(); 
} else { 
    $("#txtAge").hide();
}

การแจ้งเตือน ($ ( 'อินพุต [ชื่อ = isAgeSelected]') attr ( 'ตรวจสอบ').); รหัสข้างต้นแสดงให้เห็นจริง / เท็จขึ้นอยู่กับการตรวจสอบ ปัญหาใด ๆ กับความพยายามครั้งก่อน
Prasad

ปรา, คุณกำลังอ้างอิงช่องทำเครื่องหมายของคุณด้วยชื่อหรือ ID? ตอนนี้ฉันสับสนแล้ว ...
karim79

คุณไม่สามารถให้รหัสได้หรือไม่ สิ่งต่างๆจะง่ายขึ้นมากในตัวอย่างของคุณคุณระบุที่อยู่โดยใช้ ID
xenon

กระบวนการขนาด. () เลิกใช้แล้วในขณะที่ jQuery 1.8 ใช้คุณสมบัติ. long (with no () ;-)) แทน! และบางทีคุณต้องติดกัน "#isAgeSelected: checked"
François Breton

47

ฉันวิ่งเข้าไปในปัญหาเดียวกันแน่นอน ฉันมีช่องทำเครื่องหมาย ASP.NET

<asp:CheckBox ID="chkBox1" CssClass='cssChkBox1' runat="server" />

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

if ($("'.cssChkBox1 input[type=checkbox]'").is(':checked'))
{ ... } else { ... }

ฉันแน่ใจว่าคุณสามารถใช้ ID แทน CssClass

if ($("'#cssChkBox1 input[type=checkbox]'").is(':checked'))
{ ... } else { ... }

ฉันหวังว่านี่จะช่วยคุณได้


46

มีหลายวิธีในการตรวจสอบว่าได้ทำเครื่องหมายที่ช่องทำเครื่องหมายหรือไม่:

วิธีตรวจสอบโดยใช้ jQuery

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

ตรวจสอบตัวอย่างหรือเอกสาร:


46

รหัสนี้จะช่วยคุณ

$('#isAgeSelected').click(function(){
   console.log(this.checked);
   if(this.checked == true) {
        $("#txtAge").show();
    } else {
       $("#txtAge").hide();
   }
});

42

สิ่งนี้ใช้ได้กับฉัน:

/* isAgeSelected being id for checkbox */

$("#isAgeSelected").click(function(){
  $(this).is(':checked') ? $("#txtAge").show() : $("#txtAge").hide();
});

41

นี่เป็นวิธีการที่แตกต่างกันในการทำสิ่งเดียวกัน:

$(document).ready(function (){

    $('#isAgeSelected').click(function() {
        // $("#txtAge").toggle(this.checked);

        // Using a pure CSS selector
        if ($(this.checked)) {
            alert('on check 1');
        };

        // Using jQuery's is() method
        if ($(this).is(':checked')) {
            alert('on checked 2');
        };

        //  // Using jQuery's filter() method
        if ($(this).filter(':checked')) {
            alert('on checked 3');
        };
    });
});
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<input type="checkbox" id="isAgeSelected"/>
<div id="txtAge" style="display:none">Age is something</div>


35

ใช้สิ่งนี้:

if ($('input[name="salary_in.Basic"]:checked').length > 0)

ความยาวมากกว่าศูนย์ถ้ามีการทำเครื่องหมายที่ช่องทำเครื่องหมาย


33

วิธีการทำของฉันคือ:

if ( $("#checkbox:checked").length ) {       
    alert("checkbox is checked");
} else {
    alert("checkbox is not checked");
}

31
$(selector).attr('checked') !== undefined

สิ่งนี้จะส่งคืนtrueถ้ามีการตรวจสอบอินพุตและfalseหากไม่ใช่


4
ฉันเข้าใจว่าทำไมสิ่งนี้อาจทำงานได้ในบางสถานการณ์แม้ว่าจะมีปัญหาเช่นเดียวกับ.attr('checked')ที่มันไม่ได้คืนสถานะที่ถูกต้องเสมอไป ตามคำตอบของSalman A (และบางทีอาจเป็นของคนอื่น) มันเป็นตัวเลือกที่ปลอดภัยกว่าที่จะใช้แทน นอกจากนี้มันยังเป็นไปได้ที่จะประกาศเป็น .prop('checked')undefinedvar undefined = 'checked';
WynandB

.prop('checked')ดูเหมือนคำตอบที่ดีกว่าตอนนี้ มันไม่น่าเชื่อถือในขณะที่เขียน ฉันไม่เข้าใจและไม่คิดว่ามันเป็นอุดมคติที่ดีสำหรับการประกาศใหม่ที่ไม่ได้กำหนด
fe_lix_

ในฐานะที่เป็นหมายเหตุด้านการตรวจสอบสำหรับ undefined จะดีกว่าด้วยtypeof (x) !== "undefined"
naor

ในกรณีนี้ฉันเชื่อว่ามันอ่านได้แม่นยำกว่าและง่ายกว่าด้วย! == ฉันจะใช้ typeof (x) เฉพาะเมื่อทดสอบตัวแปรที่อาจกำหนดหรืออาจไม่ได้กำหนดไว้ในอดีต
fe_lix_

30
$(document).ready(function() {    
    $('#agecheckbox').click(function() {
        if($(this).is(":checked"))
        {
            $('#agetextbox').show();
        } else {
            $('#agetextbox').hide();
        }
    });
});

30

คุณสามารถใช้ได้:

  if(document.getElementById('isAgeSelected').checked)
    $("#txtAge").show();  
  else
    $("#txtAge").hide();

if($("#isAgeSelected").is(':checked'))
  $("#txtAge").show();  
else
  $("#txtAge").hide();

ทั้งคู่ควรทำงาน


27

1) ถ้ามาร์กอัพ HTML ของคุณคือ:

<input type="checkbox"  />

attr ใช้:

$(element).attr("checked"); // Will give you undefined as initial value of checkbox is not set

ถ้าใช้อุปกรณ์ประกอบฉาก:

$(element).prop("checked"); // Will give you false whether or not initial value is set

2) หากมาร์กอัป HTML ของคุณคือ:

 <input type="checkbox"  checked="checked" />// May be like this also  checked="true"

attr ใช้:

$(element).attr("checked") // Will return checked whether it is checked="true"

เสาที่ใช้:

$(element).prop("checked") // Will return true whether checked="checked"

นี่เป็นปัญหาที่แท้จริง วิธีแก้ปัญหาของฉัน - เพิ่มเหตุการณ์การเปลี่ยนแปลงไปยังอินพุต: <input type = "checkbox" onchange = "ChangeChkBox ()" /> จากนั้นใช้เหตุการณ์นั้นเพื่อเปลี่ยนตัวแปร JavaScript บูลีนและใช้ตัวแปร JavaScript แทนการสอบถามช่องทำเครื่องหมายโดยตรง
Graham Laight

24

ตัวอย่างนี้ใช้สำหรับปุ่ม

ลองทำสิ่งต่อไปนี้:

<input type="button" class="check" id="checkall" value="Check All" />  &nbsp; <input type="button" id="remove" value="Delete" /> <br/>

<input type="checkbox" class="cb-element"  value="1" /> Checkbox  1 <br/>
<input type="checkbox" class="cb-element"  value="2" /> Checkbox  2 <br/>
<input type="checkbox" class="cb-element"  value="3" /> Checkbox  3 <br/>


$('#remove').attr('disabled', 'disabled'); 

$(document).ready(function() {  

    $('.cb-element').click(function() {

        if($(this).prop('checked'))
        {
            $('#remove').attr('disabled', false);
        }
        else
        {
            $('#remove').attr('disabled', true);
        }
    });   

    $('.check:button').click(function()
{
    var checked = !$(this).data('checked');
    $('input:checkbox').prop('checked', checked);
    $(this).data('checked', checked);

    if(checked == true)
    {
        $(this).val('Uncheck All');
         $('#remove').attr('disabled', false);
    }

    else if(checked == false)
    {
        $(this).val('Check All');
        $('#remove').attr('disabled', true);
    }
});
});

24

คำตอบยอดนิยมไม่ได้ทำเพื่อฉัน แม้ว่าสิ่งนี้:

<script type="text/javascript">
    $(document).ready(function(){

        $("#li_13").click(function(){
            if($("#agree").attr('checked')){
                $("#saveForm").fadeIn();
            }
            else
            {
                $("#saveForm").fadeOut();
            }
        });
    });
</script>

โดยทั่วไปเมื่อมีการคลิกองค์ประกอบ # li_13 จะตรวจสอบว่าองค์ประกอบ # ยอมรับ (ซึ่งเป็นช่องทำเครื่องหมาย) ถูกตรวจสอบโดยใช้.attr('checked')ฟังก์ชัน หากเป็นเช่นนั้นจะจางลงในองค์ประกอบ #saveForm และหากไม่ได้จางออกไปยังองค์ประกอบ saveForm


22

ฉันใช้สิ่งนี้:

 <input type="checkbox" id="isAgeSelected" value="1" /> <br/>
 <input type="textbox" id="txtAge" />

 $("#isAgeSelected").is(':checked') ? $("#txtAge").show() : $("#txtAge").hide();

22

แม้ว่าคุณจะมีการเสนอวิธีการแก้ปัญหา JavaScript สำหรับปัญหาของคุณ (แสดงtextboxเมื่อcheckboxเป็นchecked) ปัญหานี้สามารถแก้ไขได้โดยการ CSS ด้วยวิธีนี้แบบฟอร์มของคุณใช้ได้กับผู้ใช้ที่ปิดใช้งาน JavaScript

สมมติว่าคุณมี HTML ดังต่อไปนี้:

<label for="show_textbox">Show Textbox</label>
<input id="show_textbox" type="checkbox" />
<input type="text" />

คุณสามารถใช้ CSS ต่อไปนี้เพื่อให้สามารถใช้งานได้ตามที่ต้องการ:

 #show_textbox:not(:checked) + input[type=text] {display:none;}

สำหรับสถานการณ์อื่น ๆ คุณอาจนึกถึงตัวเลือก CSS ที่เหมาะสม

นี่คือซอที่จะแสดงให้เห็นถึงวิธีการนี


21

สลับ: 0/1 หรืออย่างอื่น

<input type="checkbox" id="nolunch" />
<input id="checklunch />"

    $('#nolunch').change(function () {
    if ($(this).is(':checked')) {
        $('#checklunch').val('1');
    };
    if ($(this).is(':checked') == false) {
        $('#checklunch').val('0');
    };
});

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