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.