jquery का उपयोग करके रेडियो पर ईवेंट पर क्लिक करें या बदलें


86

मेरे पेज में कुछ रेडियो हैं, और मैं कुछ करना चाहता हूं जब चेक किए गए रेडियो में बदलाव होता है, हालांकि कोड IE में काम नहीं करता है:

$('input:radio').change(...);

और googling के बाद, लोग सुझाव देते हैं कि इसके बजाय क्लिक का उपयोग करें । लेकिन यह काम नहीं करता है।

यह उदाहरण कोड है:

<html>
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
        <script type="text/javascript">
            $('document').ready(
                function(){
                    $('input:radio').click(
                        function(){
                            alert('changed');   
                        }
                    );  
                }
            );

        </script>
    </head>
    <body>
        <input type="radio" name="testGroup" id="test1" />test1<br/>
        <input type="radio" name="testGroup" id="test2" />test2<br/>
        <input type="radio" name="testGroup" id="test3" />test3</br>
    </body>
</html>

यह IE में भी काम नहीं करता है।

इसलिए मैं जानना चाहता हूं कि क्या चल रहा है?

अगर मैं एक चेक किए गए रेडियो पर क्लिक करता हूं, तो भी मुझे डर है कि क्या यह बदलाव की घटना को पीछे छोड़ देगा?

अपडेट करें:

मैं टिप्पणी नहीं जोड़ सकता, इसलिए मैं यहां उत्तर देता हूं।

मैं IE8 का उपयोग करता हूं और फुरकान मुझे जो लिंक देता है वह IE8 में भी काम नहीं करता है। मुझे नहीं पता क्यों...


1
IE का कौन सा संस्करण आप परीक्षण के लिए उपयोग कर रहे हैं? IE8 में आपका कोड मेरे लिए काम करता है। आप सही हैं कि यदि आप किसी चेक किए गए रेडियो पर क्लिक करते हैं तो ईवेंट ट्रिगर हो जाएगा। इससे बचने के लिए आपको अपने कोड में एक चेक करना होगा।
किंजनाककिस

यह मेरे लिए काम करता है, निम्नलिखित jsfiddle.net/NerXh की
फुरकान हमीदी

जवाबों:


111

इस कोड ने मेरे लिए काम किया:

$(function(){

    $('input:radio').change(function(){
        alert('changed');   
    });          

});

http://jsfiddle.net/3q29L/


4
यह तब मेरे लिए काम नहीं करता है जब एक एकल रेडियो को लक्षित किया जाता है और दूसरे रेडियो का चयन करने से दूसरे का चयन रद्द हो जाता है।
डग अमोस

1
सिवाय जब प्रदर्शन एक पृष्ठ पर कई तत्वों के साथ एक मुद्दा है। इसके $('input[type=radio]')बजाय किस मामले में उपयोग करें ("अतिरिक्त नोट्स" देखें: api.jquery.com/radio-selector )
जम्मों


14

मेरे लिए भी काम करता है, यहाँ एक बेहतर समाधान है ::

फिडल डेमो

<form id="myForm">
  <input type="radio" name="radioName" value="1" />one<br />
  <input type="radio" name="radioName" value="2" />two 
</form>

<script>
$('#myForm input[type=radio]').change(function() {       
    alert(this.value);
});
</script>

आपको यह सुनिश्चित करना चाहिए कि आपने jqueryअन्य सभी आयातों और जावास्क्रिप्ट फ़ंक्शंस के ऊपर इनिशियलाइज़ किया है। क्योंकि $एक jqueryफ़ंक्शन है। यहाँ तक की

$(function(){
 <code>
}); 

jqueryआरम्भिक जाँच होगी या नहीं। यह सुनिश्चित करेगा कि <code>सभी जावास्क्रिप्ट शुरू होने के बाद ही चलेंगे।


7

प्रयत्न

$(document).ready(

के बजाय

$('document').ready(

या आप शॉर्टहैंड फॉर्म का उपयोग कर सकते हैं

$(function(){
});

1

$( 'input[name="testGroup"]:radio' ).on('change', function(e) {
     console.log(e.type);
     return false;
});

घटनाओं को संभालने के लिए यह वाक्यविन्यास थोड़ा अधिक लचीला है। न केवल आप "परिवर्तन" का निरीक्षण कर सकते हैं, बल्कि अन्य प्रकार की घटनाओं को भी एक ही घटना हैंडलर का उपयोग करके नियंत्रित किया जा सकता है। आप पहले पैरामीटर के लिए तर्कों के रूप में घटनाओं की सूची को पास करके ऐसा कर सकते हैं। JQuery पर देखें

दूसरे, .change () .on ("परिवर्तन", हैंडलर) के लिए एक शॉर्टकट है। यहाँ देखें । मैं .on के बजाय .on () का उपयोग करना पसंद करता हूं क्योंकि घटनाओं पर मेरा अधिक नियंत्रण है।

अंत में, मैं बस तत्व को घटना को संलग्न करने के लिए एक वैकल्पिक वाक्यविन्यास दिखा रहा हूं।


यह इवाओ निशिदा के उत्तर से कैसे प्रभावी रूप से अलग है ?
सभी श्रमिक आवश्यक

यह अलग है क्योंकि यह .change () लेकिन (.on) का उपयोग नहीं करता है। इस उत्तर को अस्वीकार करने का कोई कारण नहीं है।
लुइस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.