2010-12-17 11 views
5

के माध्यम से मैं एक मेज जिसका पंक्तियों तो जैसे रेडियो बटन समूह हो है:सेट नहीं कर सकता इनपुट जाँच = "जाँच" jQuery

<td class="usegsm"> 
    <input type="hidden" class="use-gsm" value='<%# DataBinder.Eval(Container.DataItem, "use_gsm") %>' /> 
    <input type="hidden" class="use-gsm-lineup" value='<%# DataBinder.Eval(Container.DataItem, "use_gsm_lineup") %>' /> 
    <input type="radio" id="radio1-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>" name="radio-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>" class="events-lineups" /> 
    <label for="radio1-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>">Events &amp; Lineups</label> 
    <input type="radio" id="radio2-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>" name="radio-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>" class="events" /> 
    <label for="radio2-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>">Events</label> 
    <input type="radio" id="radio3-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>" name="radio-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>" class="none" checked="checked" /> 
    <label for="radio3-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>">None</label> 
</td> 

जब पृष्ठ लोड (document.ready अंदर) मैं करने के लिए इस फ़ंक्शन को कॉल करें input.use-gsm और input.use-gsm-lineup के लिए सही रेडियो बटन, ऊपर मूल्यों पर आधारित जाँच:

function setGsmButtonStates() { 
     $('td.usegsm').buttonset(); /* http://jqueryui.com/demos/button/#radio */ 
     $('td.usegsm').each(function(i) { 
     var use_gsm = $(this).children('input.use-gsm').val(); 
     var use_gsm_lineup = $(this).children('input.use-gsm-lineup').val(); 

     if (use_gsm == 'Y' && use_gsm_lineup == 'Y') { 
      $(this).children('input.events-lineups').attr('checked', true); 
     } 
     else if (use_gsm == 'Y' && use_gsm_lineup != 'Y') { 
      $(this).children('input.events').attr('checked', true); 
     } 
     else { 
      $(this).children('input.none').attr('checked', true); 
     } 

     }); 
    } 

कुछ की स्थापना .attr('checked',true) या यहाँ तक कि .attr('checked','checked') कोई प्रभाव नहीं है कारण के लिए।

क्या मैं $.each() या .attr() गलत तरीके से उपयोग कर रहा हूं?

+2

आप '.attr() 'ठीक है, मुझे लगता है कि इसका उपयोग कर रहे हैं, जिसका अर्थ है कि यह मुद्दा कुछ भी नहीं चुना जा रहा है। '.children() 'केवल तत्काल बच्चों से मेल खाता है, इसे' .find() 'में बदलने का प्रयास करें और देखें कि यह काम करता है या नहीं। क्या '.buttonset()' इनपुट को लपेटता है? – Orbling

+0

उनके उदाहरण कोड के आधार पर, .children() को सही तत्वों को वापस करना चाहिए। – simshaun

उत्तर

2

समस्या यह है कि बटनसेट स्पैन तत्व के साथ रेडियो बटन छुपाता है। बटन को अंत में टूथ कॉल करने से आपकी समस्या हल हो जाएगी।

function setGsmButtonStates() { 
     $('td.usegsm').each(function(i) { 
     var use_gsm = $(this).children('input.use-gsm').val(); 
     var use_gsm_lineup = $(this).children('input.use-gsm-lineup').val(); 

     if (use_gsm == 'Y' && use_gsm_lineup == 'Y') { 
      $(this).children('input.events-lineups').attr('checked', true); 
     } 
     else if (use_gsm == 'Y' && use_gsm_lineup != 'Y') { 
      $(this).children('input.events').attr('checked', true); 
     } 
     else { 
      $(this).children('input.none').attr('checked', true); 
     } 

     }); 
      $('td.usegsm').buttonset(); /* http://jqueryui.com/demos/button/#radio */ 
    } 

पीएस: मुझे लगता है कि आप केवल पृष्ठ लोड के दौरान इस समारोह को कॉल करेंगे।

+0

GENIUS !!! यह वास्तव में लेबल में टेक्स्ट को के साथ लपेटता है, इनपुट नहीं। मैंने कभी ऐसा करने के लिए दस लाख वर्षों में ऐसा नहीं सोचा होगा। भले ही, मैं अभी भी रेडियो बटन को अनिवार्य रूप से नहीं देख सकता, लेकिन दृश्य प्रभाव वह है जो मैं बाद में हूं, क्योंकि मैं एक फॉर्म वापस पोस्ट नहीं कर रहा हूं। –

1

सबसे पहले, और मुझे नहीं लगता कि यह आपकी समस्या का समाधान करेगा, .attr('checked', 'checked') का उपयोग करें।

फिर, मुझे यकीन नहीं है कि jQuery ने रेडियो बटन को लगातार यह निर्धारित करने के लिए चुना है कि उनके लेबल को अपडेट करने की आवश्यकता है, लेकिन मुझे लगता है कि ऐसा नहीं है। फ़ायरबग (या समकक्ष उपकरण) का उपयोग करें और मैं शर्त लगाऊंगा कि आप देखेंगे कि चेकबॉक्स वास्तव में डीओएम में चेक किए जा रहे हैं, लेकिन लेबल शैलियों को इसे प्रतिबिंबित करने के लिए अपडेट नहीं किया जा रहा है।

यदि यह वास्तव में सच है, तो आपको चेकबॉक्स के लेबल में 'ui-state-active' क्लास मैन्युअल रूप से जोड़ने की आवश्यकता है ताकि jQuery UI बटन का चयन किया जा सके। (पहले से सेट में सभी अन्य लेबलों से उसी कक्षा को हटाना सुनिश्चित करें।)

संबंधित मुद्दे