2008-11-04 7 views
1

Cette requête est en relation avec this celui que j'ai demandé hier. J'ai une liste de bouton radio sur ma page asp.net définie comme suit:Asp: RadioButtonList publie toujours sur le serveur même lorsque la validation du client échoue?

<asp:RadioButtonList ID="rdlSortBy" runat="server" RepeatDirection="Horizontal" RepeatLayout="Flow" AutoPostBack="True" > 
     <asp:ListItem Selected="True">Name</asp:ListItem> 
     <asp:ListItem>Staff No</asp:ListItem> 
</asp:RadioButtonList> 

Sur le côté client, je suis en train de faire les validations suivantes:

rdlSortBy.Attributes("onclick") = "javascript:return prepareSave() && prepareSearch();" 

Le problème est que la validation Javascript fonctionne comme prévu. Un message s'affiche et je m'attends à rester sur la page jusqu'à ce que l'utilisateur ait enregistré les modifications. Au lieu de cela, la page est renvoyée et je perds effectivement les modifications non enregistrées.

Qu'est-ce qui pourrait ne pas fonctionner?

Répondre

2

J'ai corrigé ceci, le problème était que j'attachais le "onclick" du RadioButtonList à la place sur les boutons radio individuels.

C'est le correctif:

rdlSortBy.Items(0).Attributes("onclick") = "javascript:return isDirtied() && prepareSearch();" 
    rdlSortBy.Items(1).Attributes("onclick") = "javascript:return isDirtied() && prepareSearch();" 
1

Le code OnClick que vous utilisez pour "valider" est en cours d'exécution, puis le code qui publie le formulaire que le contrôle lui-même injecte est en cours d'exécution.

Vous devez intercepter ce processus PostBack et l'arrêter avant de publier le formulaire côté client. La meilleure façon de le faire serait avec un CustomValidator et spécifiquement la propriété "ClientValidationFunction". Cela permettra à votre JavaScript de signaler que la publication ne devrait pas se produire en raison d'une erreur de validation.

Questions connexes