2010-11-02 13 views
5

मेरे पास चेकबॉक्स की निम्नलिखित सूची है। जिस तरह से सूची आउटपुट होती है, यह उपयोगकर्ता को एक से अधिक मान चुनने की अनुमति देती है। हालांकि, मुझे उपयोगकर्ता को केवल नीचे दिए गए चेकबॉक्स की सूची से एक एकल मान चुनने की आवश्यकता है।रेडियो बटन या एकल चयन के साथ चेकबॉक्स में चेकबॉक्स (एकाधिक चयन) को बदलें?

क्या यह किसी भी तरह से jQuery के साथ प्राप्त करना संभव है? सूची को रेडियो बटन में बदलने, सूची या कुछ और मदद करने के लिए भी ठीक है।

दुर्भाग्यवश मेरे पास जेनरेटिंग फ़ंक्शन तक कोई पहुंच नहीं है, इसलिए मैं आउटपुट नहीं बदल सकता।

अग्रिम

<form class="ajax-form" id="user-register" method="post" accept-charset="UTF-8" action="(...)"> 

(...) 

<div id="edit-notifications-custom-custom-berlin-wrapper" class="form-item form-option"> 
    <label for="edit-notifications-custom-custom-berlin" class="option"><input type="checkbox" class="form-checkbox" value="1" id="edit-notifications-custom-custom-berlin" name="notifications_custom[custom_berlin]"> Berlin</label> 
</div> 

<div id="edit-notifications-custom-custom-hamburg-wrapper" class="form-item form-option"> 
    <label for="edit-notifications-custom-custom-hamburg" class="option"><input type="checkbox" class="form-checkbox" value="1" id="edit-notifications-custom-custom-hamburg" name="notifications_custom[custom_hamburg]"> Hamburg</label> 
</div> 

<div id="edit-notifications-custom-custom-frankfurt-am-main-wrapper" class="form-item form-option"> 
    <label for="edit-notifications-custom-custom-frankfurt-am-main" class="option"><input type="checkbox" class="form-checkbox" value="1" id="edit-notifications-custom-custom-frankfurt-am-main" name="notifications_custom[custom_frankfurt-am-main]"> Frankfurt am Main</label> 
</div> 

<div id="edit-notifications-custom-custom-duesseldorf-wrapper" class="form-item form-option"> 
    <label for="edit-notifications-custom-custom-duesseldorf" class="option"><input type="checkbox" class="form-checkbox" value="1" id="edit-notifications-custom-custom-duesseldorf" name="notifications_custom[custom_duesseldorf]"> Düsseldorf</label> 
</div> 

<div id="edit-notifications-custom-custom-bielefeld-wrapper" class="form-item form-option"> 
    <label for="edit-notifications-custom-custom-bielefeld" class="option"><input type="checkbox" class="form-checkbox" value="1" id="edit-notifications-custom-custom-bielefeld" name="notifications_custom[custom_bielefeld]"> Bielefeld</label> 
</div> 

<div id="edit-notifications-custom-custom-muenchen-wrapper" class="form-item form-option"> 
    <label for="edit-notifications-custom-custom-muenchen" class="option"><input type="checkbox" class="form-checkbox" value="1" id="edit-notifications-custom-custom-muenchen" name="notifications_custom[custom_muenchen]"> München</label> 
</div> 

(...) 

asdasd

+0

बदल आप करने में सक्षम हैं, रेडियो बटन जाने का रास्ता है। एचटीएमएल में मूल रूप से उपलब्ध कुछ हासिल करने के लिए जटिल क्लाइंट-साइड कोड जोड़ने की कोई आवश्यकता नहीं है। – dotariel

+0

मैं सहमत हूं, लेकिन जैसा कि मैंने कहा है कि मैं इसे आउटपुट से पहले नहीं बदल सकता। – maze

उत्तर

-1

धन्यवाद इस प्रयास करें:

$('[type=checkbox]').attr('type','radio'); 
+0

DOM में जोड़े जाने के बाद आप इनपुट के प्रकार को नहीं बदल सकते हैं। – shoebox639

+0

बकवास ... काफी मेला। – jellyfishtree

+0

शायद .insert का उपयोग कर इसके बाद एक ही विवरण के साथ एक रेडियो डालने के बाद और फिर – jellyfishtree

1

सबसे अच्छा तरीका यह करने के लिए मूल HTML में प्रकार बदलने के लिए किया जाएगा। यदि आप ऐसा नहीं कर सकते हैं, हालांकि, आप निम्न कार्य कर सकता है:

$(document).ready(function(){ 
    $('input.form-checkbox').change(function(){ 
     $('input.form-checkbox').not(this).each(function(idx, el){ 
      el.checked = false; 
     }); 
    }); 
}); 
3
$('.form-checkbox').bind('click', function() { 
    $('.form-checkbox').not(this).attr('checked', false); 
}); 

संपादित प्रदर्शन का अनुकूलन करने के लिए।

+0

आप इसे '$ (' फॉर्म-चेकबॉक्स ') में सरल बना सकते हैं। नहीं (यह) .attr (' चेक ', झूठी') ', जो प्रदर्शन में काफी वृद्धि करेगा। [attr() इस मामले में प्रत्येक() से बहुत धीमी है) (http://jsperf.com/attr-vs-each), हालांकि। – lonesomeday

+0

धन्यवाद! .each का उपयोग करना मेरे लिए लगभग यांत्रिक बन गया है। हे। – shoebox639

+0

क्या एक साफ समाधान है! Thx –

1

इस कोड प्रक्रिया कोड

$(document).ready(function(){ 
    $('input.form-checkbox').each(function(){ 
     var self=$(this); 
     $(this).replaceWith(
      $('<input type="radio" />'). 
       attr("value",self.attr("name")). 
       attr("name","notifications_custom"). 
       attr("id",self.attr("id")). 
       addClass("form-radio") 
     ); 
    }); 
}); 
संबंधित मुद्दे