2013-02-27 199 views
9

कहो यह मेरी HTML है कर सकते हैं:मैं कैसे टॉगल radiobutton

<input type="radio" name="rad" id="Radio0" checked="checked" /> 
<input type="radio" name="rad" id="Radio1" /> 
<input type="radio" name="rad" id="Radio2" /> 
<input type="radio" name="rad" id="Radio4" /> 
<input type="radio" name="rad" id="Radio3" /> 

आप देख सकते हैं 1 रेडियो बटन को चेक किया गया। टॉगल की तरह काम करने के लिए मुझे रेडियो बटन चाहिए। उदाहरण के लिए। अगर मैं फिर से radio0 पर क्लिक करता हूं, तो सभी रेडियो बटन अनचेक किए जाने चाहिए।

मैं इसे कैसे प्राप्त कर सकता हूं?

अद्यतन: मुझे कोई अतिरिक्त बटन नहीं चाहिए। उदाहरण के लिए। मैं एक बटन जोड़ सकता हूं और सभी रेडियो बटनों के लिए गलत होने के लिए चेक की गई संपत्ति सेट कर सकता हूं। हालांकि, मुझे वह नहीं चाहिए। मैं केवल अपने फॉर्म को इन 4 रेडियो बटनों से जोड़ना चाहता हूं।

अद्यतन: चूंकि अधिकांश लोग समझ में नहीं आते हैं कि मैं क्या चाहता हूं, मुझे फिर से बदलने की कोशिश करें- मैं चाहता हूं कि रेडियो बटन टॉगल मोड में कार्य करे। मैंने सभी रेडियो बटनों पर एक ही नाम दिया है इसलिए यह एक समूह है। अब मैं रेडियोबूटन खुद को टॉगल करना चाहता हूं। उदाहरण के लिए। अगर मैं रेडियो 0 पर क्लिक करता हूं, तो इसे अनचेक किया जाना चाहिए यदि यह चेक किया गया है और चेक किया गया है तो यह अनचेक किया गया है।

+0

मुझे लगता है कि यह "सभी रेडियो बटनों की जांच की जानी चाहिए" – 999k

+0

@ टॉम्स: आपका क्या मतलब है? – Jack

+1

आप एक ही gruop (समान "नाम" मान के साथ) के कई रेडियो बटन का चयन नहीं कर सकते .. कृपया चेकबॉक्स के बारे में सोचें। – Nils

उत्तर

18

आपको जो समस्या मिलेगी वह यह है कि जैसे ही एक रेडियो बटन क्लिक किया जाता है, इसकी जांच करने से पहले इसकी स्थिति बदल जाती है। क्या मेरा सुझाव है एक कस्टम विशेषता जोड़ने के लिए तो जैसे प्रत्येक रेडियो के पहले वाली स्थिति का ट्रैक रखने के लिए है:

$(function(){ 
    $('input[name="rad"]').click(function(){ 
     var $radio = $(this); 

     // if this was previously checked 
     if ($radio.data('waschecked') == true) 
     { 
      $radio.prop('checked', false); 
      $radio.data('waschecked', false); 
     } 
     else 
      $radio.data('waschecked', true); 

     // remove was checked from other radios 
     $radio.siblings('input[name="rad"]').data('waschecked', false); 
    }); 
}); 

तुम भी शुरू में जाँच की रेडियो मार्कअप

<input type="radio" name="rad" id="Radio0" checked="checked" data-waschecked="true" /> 

से इस विशेषता को जोड़ने की आवश्यकता होगी डेमो यहाँ देखें: http://jsfiddle.net/GoranMottram/VGPhD/2/

+0

Excellennt !! वास्तव में जिस व्यवहार की मुझे आवश्यकता थी। – Jack

+0

एक छोटी सी समस्या है। जब मैं पहली बार 1 रेडियो पर क्लिक करता हूं। यह अभी भी चेक किया गया है। क्या आप इसे पुन: पेश कर सकते हैं? – Jack

+0

आह हाँ, मैंने फिक्स के साथ जवाब अपडेट किया है। उसके लिए माफ़ करना। –

9

एक बार जब आप 2 या अधिक रेडियो बटनों का नाम देते हैं, तो वे स्वचालित रूप से समूह बन जाते हैं। उस समूह में केवल एक रेडियो बटन की जांच की जा सकती है। आप इसे पहले से ही हासिल कर चुके हैं।

0

मैं एक onClick() अपने कस्टम रेडियो के लिए निम्नलिखित की तरह का उपयोग करें:

$(function(){ 
    // if selected already, deselect 
    if ($(this).hasClass('selected') { 
    $(this).prop('checked', false); 
    $(this).removeClass('selected'); 
    } 
    // else select 
    else { 
    $(this).prop('checked', true); 
    $(this).addClass('selected'); 
    } 
    // deselect sibling inputs 
    $(this).siblings('input').prop('checked', false); 
    $(this).siblings('input').removeClass('selected'); 
}