JQuery का उपयोग करके चेकबॉक्स के परिवर्तन को कैसे संभालें?


106

मेरे पास कुछ कोड है

<input type="checkbox" id="chk" value="value" />
<label for="chk">Value </label>
<br/>
<input type="button" id="But1" value="set value" />
<br />
<input type="button" id="But2" value="read checked" />

जावास्क्रिप्ट:

$(document).ready(function () {
    console.log("Ready ...");
    registerHandlers();

    function registerHandlers() {
        $('#But1').click(function () {
            $('#chk').prop('checked', !$('#chk').is(':checked'));
        });
        $('#But2').click(function () {
            var chk1 = $('#chk').is(':checked');
            console.log("Value : " + chk1);
        });

        $('input[type="checkbox"]').change(function () {
            var name = $(this).val();
            var check = $(this).prop('checked');
            console.log("Change: " + name + " to " + check);
        });
    }
});

JQuery का उपयोग करके चेकबॉक्स के परिवर्तन को कैसे संभालें? मुझे किसी भी चेकबॉक्स को बदलने के लिए हैंडलर लगाने की आवश्यकता है।

[अपडेट करें]

एक चेकबॉक्स और कुछ बटन हैं। प्रत्येक बटन चेक बॉक्स को बदल सकता है। चेकबॉक्स बदलते हुए किसी घटना को कैसे पकड़ें?

[अपडेट करें]

मुझे इस उदाहरण jsfiddle में हैंडल चेंज चेकबॉक्स की आवश्यकता है । जब मैं बॉक्स पर क्लिक करता हूं तो संदेश "ओके" बटन नहीं दिखाया जाता है।


मैं वास्तव में आपकी समस्या नहीं समझता? चेकबॉक्स बदलने पर क्या होने वाला है?
— निकोलस

समस्या क्या है? यह कोड ठीक काम करता प्रतीत होता है
— JaredPar

2
क्या आप कृपया अपना प्रश्न पुनः दर्ज कर सकते हैं? आपके पास पहले से ही $ ('इनपुट [टाइप = "चेकबॉक्स"]') है। हैंडलर बदलें, क्या गलत है?
— मैडमैन

यदि आप बटन बदलते हैं तो चेकबॉक्स परिवर्तन की घटनाएं घटित नहीं होती हैं
— बिल करें

3
FYI करें; $('#chk').prop('checked')बूलियन लौटाता है बल्कि तब विशेषता का मूल्य। देखें api.jquery.com/prop
— स्टीफन

जवाबों:


163

:checkboxचयनकर्ता का उपयोग करें :

$(':checkbox').change(function() {

        // do stuff here. It will fire on any checkbox change

}); 

कोड: http://jsfiddle.net/s6fe9/


75
... और this.checkedयह निर्धारित करने के लिए बहुत उपयोगी है कि चेकबॉक्स को चेक किया जाए या नहीं।
— स्टेफन

1
क्या कई हैंडलर को पंजीकृत करना संभव है?
— 17

1
क्या 2015 में अभी भी इसकी सिफारिश की गई है?
— यूजेन सनिक

2
ऐसा नहीं लगता है कि एपीआई बदल दिया गया है, इसलिए हां।
— सामीच

इस की जरूरत है $ (document) .ready (समारोह (के अंदर होने के लिए) ... मेरे लिए, यह सही है?
— काया

67

आप फ़ील्ड के रूप में भी आईडी का उपयोग कर सकते हैं

$('#checkbox1').change(function() {
   if($(this).is(":checked")) {
      //'checked' event code
      return;
   }
   //'unchecked' event code
});

17

आशा है, यह कुछ मदद करेगा।

$('input[type=checkbox]').change(function () {
    if ($(this).prop("checked")) {
        //do the stuff that you would do when 'checked'

        return;
    }
    //Here do the stuff you want to do when 'unchecked'
});

6
jQuery 1.6 के रूप में, $ (यह) .prop ("चेक") का उपयोग करने के लिए बेहतर है, क्योंकि यह चेकबॉक्स की वास्तविक स्थिति के साथ गतिशील रूप से बदल जाएगा।
— hrabinowitz

3
.attr ("चेक किया गया") सही नहीं है, क्योंकि यह उपयोगकर्ता के क्लिक के रूप में अपडेट नहीं किया गया है। मैं @ hrabinowitz की टिप्पणी की पुष्टि करता हूं।
— एड्रिन

7
$("input[type=checkbox]").on("change", function() { 

    if (this.checked) {

      //do your stuff

     }
});

1
कृपया पोस्ट करने से पहले अपने स्वयं के कोड कार्यों की जाँच करें। आपके चयनकर्ताओं के साथ एक चकाचौंध का मुद्दा है ...
— जोनाथन

जीना () पदावनत है।
— गुत्थी

4
$('#myForm').on('change', 'input[type=checkbox]', function() {
    this.checked ? this.value = 'apple' : this.value = 'pineapple';
});

3
कृपया अपना उत्तर विस्तृत करें: कोड-ओनली सॉल्यूशंस डिलीट होने की अधिक संभावना है, क्योंकि वे व्याख्या नहीं करते हैं, बस ठीक करें (यदि कोई हो)।
— rekaszeru

माफ करना, @rekaszeru मैं इसे अगली बार बेहतर करूंगा
— एवर्टन जेडपी

0

ऐसा लगता है कि मुझे हटाने के लिए क्रोम में ठीक से काम नहीं कर रहा है: jsfiddle

        $('#badBut1').click(function () {
        checkit('Before');
        if( $('#chk').prop('checked') )
        {
          $('#chk').removeProp('checked');
        }else{
            $('#chk').prop('checked', true);
        }
        checkit('After');
    });
    $('#But1').click(function () {
        checkit('Before');
        if( $('#chk').prop('checked') )
        {
          $('#chk').removeClass('checked').prop('checked',false);
        }else{
            $('#chk').addClass('checked').prop('checked', true);
        }
        checkit('After');
    });

    $('#But2').click(function () {
        var chk1 = $('#chk').is(':checked');
        console.log("Value : " + chk1);
    });

    $('#chk').on( 'change',function () {
        checkit('Result');
    });
    function checkit(moment) {
        var chk1 = $('#chk').is(':checked');
        console.log(moment+", value = " + chk1);
    };

बिना ईवेंट (बाहर से) के चेकबॉक्स को कैसे टॉगल करें: jsfiddle.net/k91k0sLu/1
— लॉरेंट बेलोइल

0

नाम से रेडियो मूल्य प्राप्त करें

  $('input').on('className', function(event){
        console.log($(this).attr('name'));
        if($(this).attr('name') == "worker")
            {
                resetAll();                 
            }
    });
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.