2010-08-10 16 views
5

jQuery का उपयोग करके मैं एक तत्व पर क्लिक करने में सक्षम होना चाहता हूं जो इसके संबंधित रेडियो बटन को भी देखेगा। जब तक हमें रेडियो बटन पर runat = "server" जोड़ना पड़ा, तब तक यह ठीक काम कर रहा था।रेडियो बटन रनैट = "सर्वर" होने पर jQuery के साथ एक रेडियो बटन की जांच कर रहा है?

जब मैं इस पर लागू यह काम करने से मेरी jQuery समारोह को रोकता है और मैं यह पता लगाने नहीं कर सकते यह दौर पाने के लिए, कोड उसके बारे में यहां सरलीकृत संस्करण:

एचटीएमएल

<input type="radio" runat="server" id="sector1Radio" name="SectorGroup" title="Sector1" /> 

jQuery

$('#SomethingElse').click(function() { 
    $('input[title=Sector1]').attr('checked','checked'); 
}); 

मुझे पता चला है कि जब एक .net नियंत्रण करने के लिए अपने परिवर्तित बजाय जाँच = "जाँच" (के रूप में यह आम तौर पर होगा) यह सिर्फ जांच की गई है, इसलिए मुझे लगता है कि बदल लेकिन पर निरीक्षण एक से अधिक ब्राउज़र में डोम ing, मेरे रेडियो बटन में से कोई भी

:-(जाँच की जा रही हैं वहाँ किसी भी अन्य तरीके मैं jQuery का उपयोग कर सकते एक रेडियो बटन है कि = "सर्वर" runat है की जाँच करने के हैं?

चीयर्स!

+1

एक runat = "सर्वर" जोड़ने से आपके कोड को प्रभावित नहीं होना चाहिए। आप भी, 'SomethingElse' तत्व से इस विशेषता को जोड़ दिया यह शायद प्रदान की गई आईडी बदल जाएगा के रूप में? – Paddy

+0

हाँ मैंने नहीं किया लगता है कि यह इसे प्रभावित करेगा, मैंने इसे 'SomethingElse' में नहीं जोड़ा है, जो एक एंकर टैग है, अगर यह मदद करता है? –

+1

@ wyane मैंने अभी विशेषता runat = "s के साथ परीक्षण किया है erver "और यह ठीक काम करता प्रतीत होता है ... एक संघर्ष की तरह दिखता है, क्या आप एक ही पृष्ठ में किसी भी अन्य जावास्क्रिप्ट ढांचे का उपयोग कर रहे हैं? – manraj82

उत्तर

2

मुझे लगता है कि आपकी समस्या है कि इनपुट के आईडी नहीं रह गया है ctl00_sector1Radio या कुछ इसी तरह है sector1Radio बल्कि है। ऐसा होता है यदि आपका इनपुट नियंत्रण अंदर है उदा। एक ContentPlaceHolder नियंत्रण (मास्टर पेज का उपयोग करते समय)।

क्या आप यह सत्यापित करने के लिए जेनरेट किए गए HTML कोड (ब्राउज़र में) देख सकते हैं? इनपुट नियंत्रण की आईडी क्या है?

यदि यह मामला है, आप तो यह है कि SomeThingElse नियंत्रण से clientid से बदल दिया जाता है jQuery कोड

$('#SomethingElse').click(function() { 
    $('input[title=Sector1]').attr('checked','checked'); 
}); 
codebehind से

आपका js उत्पन्न करने के लिए की जरूरत है।

+0

$ ('# <% = SomethingElse.ClientID%>')। क्लिक करें (फ़ंक्शन() { $ ('इनपुट [शीर्षक = सेक्टर 1]')। Attr ('चेक', ' चेक किया गया '); }); $ (' # [id $ = 'SomethingElse'] 'का उपयोग करने का एक बेहतर तरीका है) – Khodor

0

मुझे एक ही समस्या थी। jQuery UI का उपयोग करने के लिए अपने radiobuttons अच्छा एक बनाने के लिए लिखने के लिए है:

<div id="radio"> 
<input type="radio" id="radio1" runat="server" /> 
<label for="radio1">The label of the radio button</label> 
... 
</div> 

<script type="text/javascript"> 
$('#radio').buttonset(); 
</script> 

इनपुट टैग की आईडी सही ढंग से लेबल की विशेषता के लिए संदर्भित किया जाना चाहिए। यदि वेबपृष्ठ मास्टर पेज के अंदर है तो इनपुट टैग की आईडी को ctl00_Something_radio1 जैसे कुछ में संशोधित किया जाएगा, और अचानक लेबल के गुण के लिए इनपुट टैग का संदर्भ नहीं आता है। एएसपी.नेट में इससे सावधान रहें!

+0

मेरा उत्तर गंभीर रूप से विकृत हो गया था :( –

1

.is (': जाँच की') और चेक बॉक्स ASP.NET radiobuttons पर काम करता है

$('#SomethingElse').click(function() { 
    $('input[title=Sector1]').is(':checked'); 
}); 
0

$('input[title=Sector1]').attr('checked',true); 

और

$('input[title=Sector1]').attr('checked',false); 

या शायद

$('#SomethingElse').click(function() { 
    $('input[title=Sector1]').attr('checked',!$('input[title=Sector1]').attr('checked')); 
}); 
0

का उपयोग कर दूसरों के द्वारा सुझाव दिया गया है, ASP.net एक ही आईडी आपके द्वारा निर्दिष्ट के साथ एचटीएमएल उत्पन्न नहीं करेगा प्रयास करें।

त्वरित समाधान:

  • आप आईडी का उपयोग कर रखना, लेकिन इसके बजाय आईडी के अंत की जाँच करने के jQuery पूछता है सकते हैं, उदाहरण:

    $ ("इनपुट [आईडी $ = 'sector1Radio'] ")।की जाँच कर ली गयी है");

  • या शीर्षक और नाम निको के रूप में के खिलाफ जांच

  • सुझाव वर्ग तत्व है जो ASP.net से प्रभावित नहीं है, उदाहरण

    < इनपुट प्रकार = "रेडियो" runat = "सर्वर" का प्रयोग करें id = "sector1Radio" वर्ग = "सेक्टर 1 रैडियो" नाम = "सेक्टर समूह" शीर्षक = "सेक्टर 1"/>

    $ ("input.sector1Radio")। (": चेक किया गया") है;

बेस्ट बात उत्पन्न एचटीएमएल कोड को देखना और देखते हैं कि आईडी आप दे रहा है, तो आप उचित jQuery का भी उपयोग करेंगे, उत्पन्न आईडी अलग अलग एक्सटेंशन हो सकता था क्योंकि है कि क्या आप मास्टर पेजेस, आदि का उपयोग निर्भर करता है

0

यदि आप मास्टरपेज का उपयोग कर रहे हैं या गतिशील रूप से नियंत्रण बना रहे हैं तो यह संभव है कि नियंत्रण आईडी का नाम बदल दिया जा रहा है # कुछ ऐसा हो जाता है #MainContent_SomethingElse।

यह जांचने का सबसे आसान तरीका फ़ायरफ़ॉक्स या क्रोम के लिए वेब डेवलपर प्लगइन का उपयोग करना है। जानकारी पर जाएं -> तत्व तत्व जानकारी प्रदर्शित करें और फिर प्रश्न में ऑब्जेक्ट का चयन करें। यह आपको आईडी, कक्षा, साथ ही पूर्वजों और बच्चों की जानकारी भी देगा। यह देखने के लिए जांचें कि क्या .NET द्वारा आईडी को गतिशील रूप से बदला जा रहा है या नहीं।

अगर ऐसी बात है:

इसे रोकने के लिए सर्वर साइड कोड में आप निम्न विशेषता बनाने के लिए उपयोग कर सकते हैं स्थिर आईडी

SomethingElse.ClientIDMode = ClientIDMode.Static; 

तो आप आप में देख सकते हैं jQuery

$('#SomethingElse').click(function() { 
      if ($('input[title=Sector1]').attr('checked')) { 
      //execute event 
}); 
0

मुझे लगता है कि क्या होता है यह है कि एएसपी नेट चेकबॉक्स और रेडियो बटन में इनपुट के बाद "इनपुट" और "अवधि" उत्पन्न होता है। तो आपको केवल इनपुट का चयन करने की आवश्यकता है।

आप कोशिश कर सकते हैं:

$('.classname input[type=checkbox]').each(function() { 
     this.checked = true; 
}); 
0

दो बातें यहाँ: नियंत्रण खोजने और जांच को क्रियान्वित। एएसपी.नेट में, आपके नियंत्रण की वास्तविक आईडी और नाम रनैट = "सर्वर" कंटेनर के आधार पर बदलना समाप्त हो जाएगा, जिसमें यह दिखाई देता है, भले ही उन कंटेनरों के पास कोई आईडी न हो।

प्रस्तुत एएसपी।नेट नियंत्रण हमेशा एक ही नाम के साथ समाप्त के रूप में आप के साथ शुरू किया, तो एक टैग की तरह:

<input type="radio" runat="server" id="sector1Radio" title="Sector1" /> 

अंत गाया जा रहा है हो सकता है के रूप में

<input type="radio" runat="server" id="ctl0$ctl0$sector1Radio" name="ctl0_ctl0_SectorGroup" title="Sector1" /> 

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

$("input[type='radio'][id*='$sector1Radio']") 

इस वाक्य रचना किसी रेडियो बटन जिसका आईडी "$ sector1Radio" शामिल हैं मिलेगा

एक बार जब आप तत्व है, तो आप की जाँच करें या इसे अचयनित कर सकते हैं निम्न कोड का उपयोग करके, जिसे आप अपने अन्य तत्व की क्लिक ईवेंट से कॉल करेंगे।

// check the radio button 
$("input[type='radio'][id*='$sector1Radio']").attr('checked', true);  

// uncheck the radio button 
$("input[type='radio'][id*='$sector1Radio']").attr('checked', false); 

एक आखिरी बात ... अगर आप सिर्फ बटन पर क्लिक करें जब दबाया पाठ का कोई खंड चाहते हैं (एक टैग में लपेट और इस तरह अपने रेडियो बटन का नियंत्रण नाम के AssociatedControlId गुण सेट,। ..

<input type="radio" runat="server" id="sector1Radio" title="Sector1" /> 
<asp:label runat="server" id="lblsector1Radio" associatedControlID="sector1Radio">clicking here clicks and unclicks the radio button</asp:label> 

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

  • कोई संबंधित समस्या नहीं^_^