2010-08-26 22 views
1

J'ai un RadioButtonList qui a AutoPostBack définie sur True et est géré côté serveur:ASP.NET RadioButtonList et PROGRESSISTE Amélioration

<asp:radiobuttonlist ID="myRBL" OnSelectedIndexChanged="MyRBL_SelectedIndexChanged" 
    RepeatDirection="Horizontal" AutoPostBack="True" runat="server"> 
    <asp:ListItem Selected="True">Choice 1</asp:ListItem> 
    <asp:ListItem>Choice 2</asp:ListItem> 
</asp:radiobuttonlist> 

Je veux « améliorer progressivement » en ajoutant une fonction JavaScript avec le Attribut OnClick. Après avoir ajouté OnClick = "myFunction();", le code côté serveur n'est plus appelé lorsque JavaScript est désactivé dans le navigateur.

Est-ce que quelqu'un a un moyen de contourner cela (dois-je implémenter le IPostBackEventHandler ou ai-je oublié quelque chose)?

MISE À JOUR: 08-26-2010 16:31 p.m. Pacific

Apparemment, l'ASP.NET this control cannot submit avec JavaScript est désactivé. Quelqu'un at-il une solution détaillée à cela?

Répondre

1

AutoPostBack utilise JavaScript pour publier un message après avoir cliqué sur un bouton radio. En définissant l'attribut onclick, ce comportement est remplacé, vous devez donc ajouter un gestionnaire d'événements supplémentaire à l'événement click.

Pour autant que je sache, il n'y a aucun moyen simple de le faire en JavaScript plaine, donc je vous recommande d'utiliser jQuery:

$('#radioButtonId').click(myFunction); 
+0

Malheureusement, je ne peux pas utiliser JQuery ici ... – IrishChieftain

+0

Je suis sûr, il y a d'autres façons d'ajouter plusieurs gestionnaires d'événements à l'événement click. Effectuer une recherche sur Google pour [ajouter plusieurs gestionnaires d'événements javascript] (http://www.google.com/search?q=javascript+add+multiple+event+handlers) présente un ensemble d'articles sur les différentes façons de procéder. – davehauser

+0

Oui mais je me méfie des différences de navigateur et suis un newbie total JS. Merci pour le lien, +1 :-) – IrishChieftain

1

La seule façon de vérifier si l'utilisateur a javascript activé est du côté client.

Votre meilleur pari est alors d'ajouter la fonction du côté client, plutôt que dans le code du serveur. poignées jQuery ce bien, avec quelque chose comme:

$(function() { 
    $('input[type=radio]').click(myFunction); 
}); 

Si vous ne l'utilisez jquery vous pouvez faire un document.getElementById() et ainsi de suite pour assigner les gestionnaires de clic. De cette façon, si le client n'a pas de javascript, les boutons radio sont complètement intacts.

+0

Si l'utilisateur désactivé JavaScript, avait alors cela ne fonctionnera pas? – IrishChieftain

+0

@IrishChieftain - peut-être que j'ai mal compris. N'est-ce pas le but? Que vous ne voulez pas l'amélioration onClick si javascript est désactivé? – womp

+0

Je vois ce que vous voulez dire ... le câbler dans le corps en charge? – IrishChieftain