JQuery සමඟ පිරික්සුම් කොටුව සලකුණු කර ඇත්දැයි පරීක්ෂා කරන්න


1207

පිරික්සුම් කොටුවේ අරාවෙහි ඇති හැඳුනුම්පත භාවිතයෙන් පිරික්සුම් කොටුවක ඇති කොටුවක් සලකුණු කර ඇත්දැයි පරීක්ෂා කරන්නේ කෙසේද?

මම පහත කේතය භාවිතා කරමි, නමුත් එය හැඳුනුම්පත නොසලකා සෑම විටම පරීක්ෂා කළ පිරික්සුම් කොටු ගණන නැවත ලබා දෙයි.

function isCheckedById(id) {
    alert(id);
    var checked = $("input[@id=" + id + "]:checked").length;
    alert(checked);

    if (checked == 0) {
        return false;
    } else {
        return true;
    }
}

සලකුණු කොටුව මාලාවක් ? එවැනි දෙයක් ගැන කිසි දිනෙක අසා නැත. එය JQuery විශේෂිත දෙයක්ද, නැතිනම් ප්ලගිනයක් / විජට් එකක්ද?
පෙකා

2
පිරික්සුම් කොටුවේ අරාව යන්නෙන් අදහස් වන්නේ: <ආදාන වර්ගය = "පිරික්සුම් කොටුව" නම = "chk []" id = "chk []" අගය = "ඇපල්"> <ආදාන වර්ගය = "පිරික්සුම් කොටුව" නම = "chk []" id = "chk []" value = "කෙසෙල්"> <ආදාන වර්ගය = "පිරික්සුම් කොටුව" නම = "chk []" id = "chk []" අගය = "තැඹිලි"> යනාදිය.
ජේක්

2
පිරික්සුම් කොටුවේ අරාවෙහි ඇති වැරැද්ද කුමක්ද? “අදාළ වන සියල්ල පරීක්ෂා කරන්න” ආදානය ඔබ කරන්නේ කෙසේද?
nickf

5
ඔබේ idඒවා අද්විතීය බවට වග බලා ගන්න ! name(සහ මේ අවස්ථාවේ දී) පුනරාවර්තනය කළ හැකිය, නමුත් ඔබ අනුපිටපත් කළහොත් ඔබට බොහෝ අමුතු දේවල් සිදුවනු ඇත id! = ඩී
ජෙෆ් රූපට්

එය ක්‍රියාත්මක වීමට මට "@" ඉවත් කිරීමට සිදු විය. එසේම, ඔබට අවසාන පේළි 5 සිට 1 දක්වා අවම කළ හැකිය: ආපසු (පරීක්ෂා කර ඇත! = 0);
බී. ක්ලේ ෂැනන්

Answers:


702

ඔබගේ ලේඛනයේ හැඳුනුම්පත් අද්විතීය විය යුතුය, එයින් අදහස් වන්නේ ඔබ මෙය නොකළ යුතු බවයි :

<input type="checkbox" name="chk[]" id="chk[]" value="Apples" />
<input type="checkbox" name="chk[]" id="chk[]" value="Bananas" />

ඒ වෙනුවට, හැඳුනුම්පත අතහරින්න, ඉන්පසු ඒවා නමකින් හෝ අඩංගු අංගයකින් තෝරන්න:

<fieldset id="checkArray">
    <input type="checkbox" name="chk[]" value="Apples" />

    <input type="checkbox" name="chk[]" value="Bananas" />
</fieldset>

දැන් jQuery:

var atLeastOneIsChecked = $('#checkArray:checkbox:checked').length > 0;
//there should be no space between identifier and selector

// or, without the container:

var atLeastOneIsChecked = $('input[name="chk[]"]:checked').length > 0;

මා සඳහා ආදාන නාමයේ ද්විත්ව මිල ගණන් නොමැතිව වැඩ කර ඇත: ආදානය [name = multiplecheck []]: පරීක්ෂා කර ඇත, ස්තූතියි!
ඇලෙජැන්ඩ්‍රෝ ක්විරෝස්

32
$('#checkArray :checkbox:checked').length > 0;වඩාත් සරල $('#checkArray').checkedක්‍රියා කරන විට සහ තවත් සංස්කරණ වල ඇති විට භාවිතා කරන්නේ ඇයි ?
දොන් චෙඩ්ල්

5
Odddman එය ක්‍රියාත්මක වන්නේ jquery වස්තුවක් මත පමණක් නොවේ. $ (elem) වෙනුවට. පරීක්ෂා කර, elem.checked උත්සාහ කරන්න.
ඩෑන් විලියම්ස්

1
An ඩැන්විලියම්ස් ඔව් නමුත් mmcrae ලබා දුන් උදාහරණයේ නැත.
ඔඩ්මන්

දෙවැන්න මා වෙනුවෙන් වැඩ කළේය. ස්තූතියි !! var atLeastOneIsChecked = $('input[name="chk[]"]:checked').length > 0;
ඩේවිඩ් සිල්වා-බැරරා

2051
$('#' + id).is(":checked")

පිරික්සුම් කොටුව සලකුණු කර ඇත්නම් එය ලැබෙනු ඇත.

එකම නමක් ඇති පිරික්සුම් කොටු සඳහා ඔබට පරීක්ෂා කළ අයගේ ලැයිස්තුව ලබා ගත හැක්කේ:

var $boxes = $('input[name=thename]:checked');

ඉන්පසු ඒවා හරහා ගොස් පරීක්ෂා කර ඇති දේ බැලීමට ඔබට කළ හැකිය:

$boxes.each(function(){
    // Do stuff here with this
});

කොපමණ සංඛ්‍යාවක් පරීක්ෂා කර ඇත්දැයි සොයා ගැනීමට ඔබට කළ හැකිය:

$boxes.length;

2
තවත් ක්‍රමයක් නම් $('#'+id).attr('checked'), එය $('#' + id).is(":checked")IMO ට සමාන නමුත් මතක තබා ගැනීම පහසුය.
සුබින්

85
Ub සුබින්: ප්‍රවේශම් වන්න .attr('checked'). JQuery 1.6 හි එහි හැසිරීම වෙනස් විය. එය නැවත පැමිණීමට falseහෝ true. දැන් එය නැවත පැමිණේ undefinedහෝ "checked". .is(':checked')මෙම ගැටළුව නොමැත.
ජෝයි ඇඩම්ස්

1
O ජෝන් බොකර්: නෙකෝ අදහස් දැක්වීම ගැන කණගාටුයි, නමුත්, එය වැඩ කරන $('.ClassName').is(':checked')බවක් නොපෙනෙන නමුත් $('#' + id).is(":checked")එසේ වන්නේ ඇයි? එක් අයෙකු හැඳුනුම්පතෙන් ද තවත් අයෙකු පන්ති නාමයෙන් ද බැලූ බැල්මට.
මයික්_ ඕබ්‍රියන්

IkeMike_OBrien ගැටළුව විය හැක්කේ එම පන්තියේ නම සහිත පිරික්සුම් කොටුවකට වඩා තිබීමයි. (': Check') යනු සැබවින්ම ක්‍රියාත්මක වන්නේ එක් මූලද්‍රව්‍යයක් මත පමණි.
ජෝන් බොකර්

5
සටහන: jQuery 1.8 සිට ප්‍රමාණය () ඉවත් කර ඇත - ඒ වෙනුවට .length භාවිතා කරන්න
JM4

316
$('#checkbox').is(':checked'); 

පිරික්සුම් කොටුව සලකුණු කර ඇත්නම් හෝ අසත්‍ය නම් ඉහත කේතය සත්‍ය වේ.


7
use (මෙය) භාවිතා කරන විට ඉතා ප්‍රයෝජනවත් වේ .is (': පරීක්ෂා කර ඇත'); ස්තූතියි!
පිනෝයිස්ටැක් ඕවර්ෆ්ලවර්

පිරික්සුම් කොටුව සලකුණු කර ඇත්දැයි පරීක්ෂා කිරීමට මෙම ක්‍රමය ප්‍රයෝජනවත් වේ, ඔබ එය තෝරා ගන්නේ කෙසේදැයි දන්නේ කොතැනද, ස්තූතියි
ඕමාර් ඉසයිඩ්

මෙය මට වැඩ කළා, මම මීට පෙර මෙය භාවිතා කළ var isChecked = $('#CheckboxID').attr('checked') ? true : false; නමුත් සෑම විටම නිවැරදි වටිනාකමක් ලබා දුන්නේ නැත. ඉතින් ස්තූතියි!
leiit

123

පහත සඳහන් සියලු ක්‍රම ප්‍රයෝජනවත් වේ:

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

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

$('#checkbox')[0].checked

$('#checkbox').get(0).checked

DOMelement හෝ inline "this.checked" වළක්වා ගත යුතුය. ඒ වෙනුවට ක්‍රමවේදය පිළිබඳ jQuery සිදුවීම් සවන්දෙන්නන් භාවිතා කළ යුතුය.


98

පිරික්සුම් කොටුව සලකුණු කර තිබේද නැද්ද යන්න පරීක්ෂා කිරීම සඳහා jQuery කේතය:

if($('input[name="checkBoxName"]').is(':checked'))
{
  // checked
}else
{
 // unchecked
}

විකල්පයක් ලෙස:

if($('input[name="checkBoxName"]:checked'))
{
    // checked
}else{
  // unchecked
}

4
පළමු විසඳුම අස්ථානගත වී ඇත :... නිවැරදි එක : if(('input[name="checkBoxName"]').is(':checked')).
Aerendir

ඩොලර් ලකුණ ($) නැතිවීම, එය විය යුතුය if($('input[name="checkBoxName"]').is(':checked')).
පෙනි ලියු

elseJQuery වස්තුවක, ගැලපෙන මූලද්‍රව්‍යයන් නොතිබුණද, එය "සත්‍ය" බැවින් දෙවැන්න කිසි විටෙකත් වාරණය ක්‍රියාත්මක නොකරනු ඇත. .lengthඅවසානයට එකතු කරන්න , එවිට ඔබ කතා කරයි.
මිථ්‍යාදෘෂ්ටික වඳුරා

69

පරීක්ෂා කළ ගුණාංගය මතක තබා ගත යුතු වැදගත්ම සංකල්පය නම් එය පරීක්ෂා කළ දේපලවලට අනුරූප නොවන බවයි. ආරෝපණය ඇත්ත වශයෙන්ම පෙරනිමි පිරික්සුම් දේපල වලට අනුරූප වන අතර එය භාවිතා කළ යුත්තේ පිරික්සුම් කොටුවේ ආරම්භක අගය සැකසීමට පමණි. පරීක්ෂා කරන ලද ගුණාංගයේ අගය, පිරික්සුම් කොටුවේ තත්වය සමඟ වෙනස් නොවේ. එබැවින්, පිරික්සුම් කොටුවක් සලකුණු කර ඇත්දැයි තීරණය කිරීම සඳහා හරස් බ්‍රව්සරයට අනුකූල ක්‍රමය වන්නේ දේපල භාවිතා කිරීමයි

පහත දැක්වෙන සියලු ක්‍රම හැකි ය

elem.checked 

$(elem).prop("checked") 

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


29

JQuery ප්‍රලේඛනයට අනුව, පිරික්සුම් කොටුවක් සලකුණු කර තිබේද නැද්ද යන්න පරීක්ෂා කිරීමට පහත ක්‍රම තිබේ. උදාහරණයක් ලෙස පිරික්සුම් කොටුවක් සලකා බලමු ( සියලු උදාහරණ සමඟ වැඩ කරන jsfiddle පරීක්ෂා කරන්න )

<input type="checkbox" name="mycheckbox" id="mycheckbox" />
<br><br>
<input type="button" id="test-with-checked" value="Test with checked" />
<input type="button" id="test-with-is" value="Test with is" />
<input type="button" id="test-with-prop" value="Test with prop" />

උදාහරණ 1 - පරීක්ෂා කර ඇත

$("#test-with-checked").on("click", function(){
    if(mycheckbox.checked) {
        alert("Checkbox is checked.");
    } else {
        alert("Checkbox is unchecked.");
    }
}); 

උදාහරණ 2 - jQuery සමඟ, සටහන -: පරීක්ෂා කර ඇත

var check;
$("#test-with-is").on("click", function(){
    check = $("#mycheckbox").is(":checked");
    if(check) {
        alert("Checkbox is checked.");
    } else {
        alert("Checkbox is unchecked.");
    }
}); 

උදාහරණ 3 - jQuery මුක්කු සමඟ

var check;
$("#test-with-prop").on("click", function(){
    check = $("#mycheckbox").prop("checked");
    if(check) {
         alert("Checkbox is checked.");
    } else {
        alert("Checkbox is unchecked.");
    }
}); 

වැඩ කරන jsfiddle පරීක්ෂා කරන්න


26

ඔබට මෙය උත්සාහ කළ හැකිය:

<script>
function checkAllCheckBox(value)
{
   if($('#select_all_').is(':checked')){
   $(".check_").attr ( "checked" ,"checked" );
    }
    else
    {
        $(".check_").removeAttr('checked');
    }

 }

</script>
<input type="checkbox" name="chkbox" id="select_all_" value="1" />


<input type="checkbox" name="chkbox" class="check_" value="Apples" />
<input type="checkbox" name="chkbox" class="check_" value="Bananas" />
<input type="checkbox" name="chkbox" class="check_" value="Apples" />
<input type="checkbox" name="chkbox" class="check_" value="Bananas" />

මෙය තවදුරටත් දේවල් කිරීමේ හොඳ ක්‍රමයක් attrනොවේ, HTML හි ගුණාංග අගය පමණක් පිළිබිඹු කරන අතර DOM හි දේපල වටිනාකම නොවේ. බලන්න සඳහා ලේඛගතකිරීමattr "වැනි DOM ගුණ ලබාගැනීම සහ වෙනස් කිරීම සඳහා එය පවසයි එහිදී checked, selectedහෝ disabledභාවිතා, ආකෘති පත්ර මූලද්රව්ය රාජ්ය .prop()ක්රමය.", සහ සඳහා ලේඛගතකිරීමprop එය "කියා එහිදී, .prop()ක්රමය කට්ටලයක් සඳහා භාවිතා කළ යුතු disabledහා checkedඒ වෙනුවට ම .attr()ක්රමය ".
මිථ්‍යාදෘෂ්ටික වඳුරා

22

OP ට jquery අවශ්‍ය බව මම දනිමි, නමුත් මගේ නඩුවේ පිරිසිදු JS පිළිතුර විය, එබැවින් මා වැනි අය මෙහි සිටින අතර jquery නොමැති නම් හෝ එය භාවිතා කිරීමට අකමැති නම් - මෙන්න JS පිළිතුර:

document.getElementById("myCheck").checked

ID myCheck සමඟ ආදානය පරික්ෂා කර ඇත්නම් සහ එය පරීක්ෂා නොකළ හොත් එය සත්‍ය වේ.

ඒ තරම් සරළයි.


11
අර්ථය $("#myCheck")[0].checkedjquery හි වැඩ කරනු ඇත! : ඩී
සැන්කර්න්

21

ඔබට පහත සඳහන් ඕනෑම නිර්දේශිත කේතයක් jquery මගින් භාවිතා කළ හැකිය.

if ( elem.checked ) {};
if ( $( elem ).prop( "checked" ) ) {};
if ( $( elem ).is( ":checked" ) ) {};

20

මෙය මම නිතර භාවිතා කරන අදහසකි:

var active = $('#modal-check-visible').prop("checked") ? 1 : 0 ;

පරීක්ෂා කර බැලුවහොත්, එය 1 ආපසු එනු ඇත; නැතිනම් එය 0 නැවත ලබා දෙනු ඇත.


10

ඔබට එය සරලව කළ හැකිය;

වැඩ කරන ෆිදෙල්

HTML

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

jQuery

$(document).ready(function () {
    var ckbox = $('#checkbox');

    $('input').on('click',function () {
        if (ckbox.is(':checked')) {
            alert('You have Checked it');
        } else {
            alert('You Un-Checked it');
        }
    });
});

හෝ ඊටත් වඩා සරල ය;

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

checkboxපරීක්ෂා කර බැලුවහොත් එය trueවෙනත් ආකාරයකින් නැවත පැමිණේundefined


or even simpler;->$("#checkbox").checked
දොන් චෙඩ්ල්

7

චෙක් පෙට්ටියක් පරීක්ෂා කිරීම සහ සැකසීම සඳහා සරල ආදර්ශනය.

jsfiddle !

$('.attr-value-name').click(function() {
    if($(this).parent().find('input[type="checkbox"]').is(':checked'))
    {
        $(this).parent().find('input[type="checkbox"]').prop('checked', false);
    }
    else
    {
        $(this).parent().find('input[type="checkbox"]').prop('checked', true);
    }
});

7

මගේ උදාහරණයෙන් කිවහොත් තත්වය සංවාද කොටුවක් වූ අතර පසුව සංවාදය වසා දැමීමට පෙර චෙක් කොටුව සත්‍යාපනය විය. ඉහත කිසිවක් නොමැති අතර jQuery හි පිරික්සුම් කොටුවක් තිබේදැයි පරීක්ෂා කරන්නේ කෙසේද? සහ jQuery පිරික්සුම් කොටුව සලකුණු කර ඇත්නම් එය ක්‍රියා කරන බවක් නොපෙනේ.

අවසානයේ දී

<input class="cb" id="rd" type="checkbox">
<input class="cb" id="fd" type="checkbox">

var fd=$('.cb#fd').is(':checked');
var rd= $('.cb#rd').is(':checked');

මෙය පංතියට පසුව හැඳුනුම්පත ඇමතීමට හේතු විය. හැඳුනුම්පතට වඩා. මෙම පිටුවෙහි ඇති කැදැලි DOM මූලද්‍රව්‍යයන් ගැටළුවට හේතු විය හැක. වැඩමුළුව ඉහළින් විය.


6

හැඳුනුම්පතක් සහිත පිරික්සුම් කොටුව සඳහා

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

ඔබට සරලව කළ හැකිය

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

ඔබට ලැබෙනු ඇත trueහෝ falseඉහත කාරක රීති හිලව් වටිනාකමක් ලෙස. සාමාන්‍ය බූලියන් ප්‍රකාශනයක් ලෙස ඔබට එය භාවිතා කළ හැකිය.


5

මේ වගේ දෙයක් උදව් වෙන්න පුළුවන්

togglecheckBoxs =  function( objCheckBox ) {

    var boolAllChecked = true;

    if( false == objCheckBox.checked ) {
        $('#checkAll').prop( 'checked',false );
    } else {
        $( 'input[id^="someIds_"]' ).each( function( chkboxIndex, chkbox ) {
            if( false == chkbox.checked ) {
                $('#checkAll').prop( 'checked',false );
                boolAllChecked = false;
            }
        });

        if( true == boolAllChecked ) {
            $('#checkAll').prop( 'checked',true );
        }
    }
}

5

ඇත්ත වශයෙන්ම, jsperf.com ට අනුව , DOM මෙහෙයුම් වේගවත් වේ, පසුව $ (). මුක්කු () පසුව $ () වේ () !!

සින්ටැක්ස් මෙන්න:

var checkbox = $('#'+id);
/* OR var checkbox = $("input[name=checkbox1]"); whichever is best */

/* The DOM way - The fastest */
if(checkbox[0].checked == true)
   alert('Checkbox is checked!!');

/* Using jQuery .prop() - The second fastest */
if(checkbox.prop('checked') == true)
   alert('Checkbox is checked!!');

/* Using jQuery .is() - The slowest in the lot */
if(checkbox.is(':checked') == true)
   alert('Checkbox is checked!!');

මම පෞද්ගලිකව කැමතියි .prop(). මෙන් නොව .is(), එය අගය සැකසීමට ද භාවිතා කළ හැකිය.


4

පිරික්සුම් කොටුව සලකුණු කරන්න

$("#checkall").click(function(){
    $("input:checkbox").prop( 'checked',$(this).is(":checked") );
})

2

මෙම කේතය භාවිතා කිරීමෙන් ඔබට අවම වශයෙන් එක් පිරික්සුම් කොටුවක් තෝරාගෙන තිබේද යන්න පරීක්ෂා කළ හැකිය. මෙය භාවිතා කිරීමෙන් ඔබට හැඳුනුම්පත් හෝ ගතික හැඳුනුම් ඉවත් කිරීමට අවශ්‍ය නොවේ. මෙම කේතය එකම හැඳුනුම්පත් සමඟ ක්‍රියා කරයි.

යොමු සබැඳිය

<label class="control-label col-sm-4">Check Box 2</label>
    <input type="checkbox" name="checkbox2" id="checkbox21" value=ck1 /> ck1<br />
    <input type="checkbox" name="checkbox2" id="checkbox22" value=ck2 /> ck2<br />

<label class="control-label col-sm-4">Check Box 3</label>
    <input type="checkbox" name="checkbox3" id="checkbox31" value=ck3 /> ck3<br />
    <input type="checkbox" name="checkbox3" id="checkbox32" value=ck4 /> ck4<br />

<script>
function checkFormData() {
    if (!$('input[name=checkbox2]:checked').length > 0) {
        document.getElementById("errMessage").innerHTML = "Check Box 2 can not be null";
        return false;
    }
    if (!$('input[name=checkbox3]:checked').length > 0) {
        document.getElementById("errMessage").innerHTML = "Check Box 3 can not be null";
        return false;
    }
    alert("Success");
    return true;
}
</script>

මූලික තොරතුරු: html මූලද්‍රව්‍ය අයිඩී නැවත නොකෙරේ (උදා: id = "checkbox2", id = "checkbox3"). මෙය හොඳ පුරුද්දක් නොවේ. පිටුවක අපට කිහිප වතාවක් පන්තිය භාවිතා කළ හැකිය.
ආනන්ද් සෝමසේකර්

1

එය 2019 මැද භාගය වන බැවින් සහ jQuery සමහර විට VueJS, React යනාදිය සඳහා පසුපස ආසනයක් ගනී. මෙන්න පිරිසිදු වැනිලා ජාවාස්ක්‍රිප්ට් ඔන්ලෝඩ් සවන්දීමේ විකල්පය:

<script>
  // Replace 'admincheckbox' both variable and ID with whatever suits.

  window.onload = function() {
    const admincheckbox = document.getElementById("admincheckbox");
    admincheckbox.addEventListener('click', function() {
      if(admincheckbox.checked){
        alert('Checked');
      } else {
        alert('Unchecked');
      }
    });
  }
</script>

1

ඔබගේ ප්‍රශ්නය පැහැදිලි නැත: ඔබට අවශ්‍ය වන්නේ “පිරික්සුම් කොටුවේ අරාව හැඳුනුම්පත” ලබා true/falseදී ප්‍රතිදානය ලබා ගැනීමටයි - මේ ආකාරයෙන් ඔබ පරීක්ෂා කළේ කුමන පිරික්සුම් කොටුවදැයි ඔබ නොදනී (ඔබේ ක්‍රියාකාරී නාමය අනුව). එබැවින් පහත දැක්වෙන්නේ ඔබේ ශරීරය පිළිබඳ මගේ යෝජනාවකි, isCheckedByIdඑය ආදාන මත පිරික්සුම් කොටුව idසහ ප්‍රතිදාන ආපසු ලබා true/falseගැනීමේදී (එය ඉතා සරල නමුත් ඔබේ හැඳුනුම්පත යතුරු පදයක් නොවිය යුතුය),

this[id].checked


-7

පහත කේතය භාවිතා කරන්න

<script>

$(document).ready(function () {
  $("[id$='chkSendMail']").attr("onchange", "ShowMailSection()");
}

function ShowMailSection() {
  if ($("[id$='chkSendMail'][type='checkbox']:checked").length >0){
      $("[id$='SecEmail']").removeClass("Hide");
  }
</script>

ඇත්තටම? කොහොමද$(function() { $("[id$='chkSendMail']").on("change", ShowMailSection); });
mplungjan

ඒවා සියල්ලම පිරික්සුම් කොටු බැවින් $("[id$='chkSendMail']:checked]")හොඳින් ක්‍රියා කළ යුතුය
mplungjan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.