jquery
  • jquery-ui
  • radio-button
  • each
  • 2010-12-17 32 views 5 likes 
    5

    aracılığıyla Kimin satırlar şöyle radyo düğmesi grupları içeren bir tablo var "işaretli":giriş kontrol ayarlanamaz = 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> 
    

    sayfası yüklendiğinde (document.ready içinde) Ben bu işlevi çağırmak input.use-gsm ve input.use-gsm-lineup için yukarıdaki değerlere dayalı doğru radyo düğmeleri, kontrol edin:

    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) hatta .attr('checked','checked') etkisi yoktur ayar nedense.

    $.each() veya .attr() yanlış mı kullanıyorsunuz?

    +2

    “.attr()' fine kullanıyorsunuz, bu da sorunun seçilecek hiçbir şeyden sorumlu olduğu anlamına geliyor. .children() 'sadece ani çocukları eşleştirir, '.find()' olarak değiştirmeyi deneyin ve çalışıp çalışmadığını görün. '.buttonset(), girdileri belki de sardı mı? – Orbling

    +0

    Örnek koduna göre .children() doğru öğeleri döndürmelidir. – simshaun

    cevap

    2

    Düğme kümesi, düğmelerle birlikte radyo düğmelerini gizlediği için sorun yaratıyor. Çağrıyı bitirmek için düğmeyi çağırmak probleminizi çözecektir.

    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 */ 
        } 
    

    S.S: Sanırım bu işlevi yalnızca sayfa yükleme sırasında bir kez çağırırsınız.

    +0

    GENIUS !!! Aslında girişteki metni etiketiyle sarar. Asla bir milyon yıl içinde bunu yapmayı düşünmemiştim. Yine de, radyo düğmelerini zorunlu olarak kontrol edemiyorum, ancak görsel efekt benim peşinde olduğum şeydir, çünkü bir form geri göndermediğimden. –

    1

    İlk olarak, bunun sizin sorununuzu çözeceğini sanmıyorum, .attr('checked', 'checked') kullanın. Daha sonra, jQuery'nin etiketlerinin güncellenmesi gerekip gerekmediğini belirlemek için sürekli olarak radyo düğmelerini seçip seçmediğini bilmiyorum, ama tahmin etmeyeceğini tahmin ediyorum. Firebug'u (veya eşdeğer bir araç) kullanın ve bahse girerim onay kutularının aslında DOM'ta kontrol edildiğini göreceksiniz, ancak etiket stilleri yansıtılacak şekilde güncellenmiyor.

    Bu gerçekten doğruysa, 'ui-state-active' sınıfını jQuery UI düğmesinin seçili olarak görünmesi için onay kutusunun etiketine elle eklemeniz gerekir. (Aynı sınıfı sınıftaki diğer tüm etiketlerden de kaldırdığınızdan emin olun.)

    İlgili konular