2010-09-02 5 views
0

J'utilise un gridview qui a un bouton radio dans l'une des colonnes. Il est utilisé comme un drapeau vrai/faux. De toute façon, à cause de la nature de mon projet, j'ai besoin de javascript pour décocher les boutons radio quand j'en coche un autre. Cela fonctionne bien, sauf que ma grille est enveloppée dans un panneau de mise à jour. Je m'occupe de reinitialiser le jQuery sur le retour automatique, mais ce qui se passe est sur poster, retirant mon bouton radio coché et ne le remettant pas en place. Si je n'utilise pas le jQuery, ça marche bien (mais je n'ai pas l'exclusivité du bouton), donc je pense que c'est mon code. Voici le code que j'ai.jQuery vérifier/décocher les problèmes

<script type="text/javascript"> 
$(document).ready(function() { 
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
    function EndRequestHandler(sender, args) { 
     $("input").click(function() { 
      $("input").removeAttr('checked'); 
      $(this).attr('checked','checked'); 
     }); 
    } 
    $("input").click(function() { 
     $("input").removeAttr('checked'); 
     $(this).attr(':checked'); 
    }); 

}); 

Y at-il une meilleure façon d'écrire ce code? Merci.

Répondre

0

J'ai résolu ce problème en changeant une partie de mon code t-sql et sans avoir à utiliser jquery du tout.

0

deux choses:

$(this).attr(':checked'); //this doesnt look right.. what are you trying to do here? 

$('input') // this will target all input fields on the page, all radio buttons, textboxes etc. i don't think u want that. try giving the radio's IDs and use the ID selector to select them in jQuery 
+0

sur le bouton radio cliquez sur Je suis en train de décocher tous les boutons radio, puis vérifier que celui que je cliqué sur. Il aurait dû ressembler à la ligne de code précédente, ne l'a pas vu. –

0

En supposant que vous définissez le nom (pas l'ID) des boutons radio pour être le même, HTML fera automatiquement la sélection exclusive pour vous sans jQuery nécessaire. Voilà comment une boîte de radio diffère d'une case à cocher. Je regarderais dans ce premier cas car vous ne devriez pas avoir besoin d'un tas de JS pour faire ce que HTML fait si vous le configurez correctement.

+0

Je ne peux pas le faire de cette façon parce que j'utilise le gridview, il a un modèle d'édition et son modèle régulier. Seul javascript peut supprimer avec succès l'état des autres radios vérifiées dans cette situation. –

0

j'ai changé votre code comme ceci:

if($('input.any-radio').length){ $('input.any-radio').change(function(){ $('input.any-radio').removeAttr('checked'); $(this).attr('checked', 'checked'); });}

et ça marche pour moi!

0

Essayez-le

Pour bouton Radio

function toggleCheckRadioButton(sender) { 
    var res; 
    if ($(sender).attr('previousValue') == 'true') { 
     $(sender).attr('checked', false) 
     res = false; 
    } 
    else { 
     $(sender).attr('checked', true); 
     res = true; 
    } 

    $('form input[type="radio"][name$="' + $(sender).attr('name') + '"]').each(function() { 
     $(this).attr('previousValue', false);   
    }); 

    $(sender).attr('previousValue', res);  
} 

Pour Radio Liste

function initToggleCheckRadioList(sender) { 
    $(sender).find('input[type="radio"]').each(function() { 
     $(this).click(function() { toggleCheckRadioButton(this); }); 
    }); 
}