2010-06-01 3 views
0

J'ai deux boutons radio dans une page .net qui sont transformés à des boutons jQuery a la http://jqueryui.com/demos/button/#radioDétermination de l'état sélectionné des boutons jQuery

Lorsque la page est chargée je touche 2 pour vérifier. Lorsque vous cliquez sur les boutons, je déclenche l'événement de publication. Le problème est que vous pouvez cliquer sur ce bouton qui est sélectionné par défaut sur le chargement initial ie Button 2, le postback est déclenché mais le gestionnaire d'événement n'est pas appelé dans le code .net car le bouton radio est déjà classé comme sélectionné (et dans des circonstances normales ne permettrait pas la publication de feu). Pour contourner cela, j'ai ajouté la méthode e.PreventDefault() MAIS cela cause des problèmes lorsque l'on clique sur le bouton 1, car avant que le gestionnaire de clic ne soit appelé, le bouton est défini sur sélectionné. Par conséquent, dans tous les cas dans le e.PreventDefault() de code suivant est appelé:

$(document).ready(function(){ 
    $("[id*='rbPayable']").click(function(e){ 
     if ($("[id*='rbPayable']").attr("checked")) 
      e.preventDefault(); 
     else 
      setTimeout('__doPostBack(\'this.id\',\'\')', 0) 
    }) 
    $("[id*='rbReceivable']").click(function(e){ 
     if ($("[id*='rbReceivable']").attr("checked")) 
      e.preventDefault(); 
     else 
      setTimeout('__doPostBack(\'this.id\',\'\')', 0) 
    }) 
}); 

Quelle est la meilleure façon pour moi de charger la page et être effectivement en mesure de faire ce qui suit: « Si rbReceivable est cochée alors ne faites rien sinon faites une publication.

+0

Avez-vous essayé de déclencher() (http://api.jquery.com/trigger/) un clic sur le deuxième bouton au lieu de simplement le définir comme coché? – Mottie

Répondre

0

Je fixe cette autre façon:

$(document).ready(function(){ 
    if ($("[id*='rbReceivable']").attr("checked")) 
    { 
     $("[id*='rbPayable']").click(function(e){ 
      setTimeout('__doPostBack(\'this.id\',\'\')', 0) 
     }) 
    } 
    else 
    { 
     $("[id*='rbPayable']").click(function(e){ 
      setTimeout('__doPostBack(\'this.id\',\'\')', 0) 
     }) 
    } 
}); 

Faire cela définit le gestionnaire de clic sur l'autre bouton lorsque le bouton sélectionné est chargé comme cochée.

0

ici, essayez quelque chose comme ça

$(document).ready(function() { 
    $('#radio').buttonset(); 

    // create a handle for the initially checked button. 
    var checkedButton = $('.radio:checked');   

    // assuming all your radio buttons have 'radio' classname 
    $('.radio').click(function() { 
     var button = $(this); 
     if (button[0].id == checkedButton[0].id) { 
      return false; 
     } else { 
      // do stuff 
      checkedButton = button; 
     } 
    }); 
}); 
Questions connexes