J'essaie d'implémenter un validateur personnalisé en JavaScript pour ma page vb.net. Ce validateur doit vérifier si dans une liste déroulante multichoix il n'y a pas de valeurs sélectionnées, montrant une erreur si c'est le cas. La chose est, je veux le faire côté client, mais dans ma fonction 'validateFunction' je reçois seulement le dernier élément sélectionné (ou non sélectionné, s'il a déjà été sélectionné). Je sais comment le faire en code-behind, mais je veux le faire côté client.obtenir toutes les valeurs sélectionnées de ListBox (côté client)
Code ASPX:
<asp:ListBox ID="lbEdit" runat="server" SelectionMode="Multiple">
</asp:ListBox>
<asp:CustomValidator id="cvEdit" runat="server" Display="None" ControlToValidate="lbEdit" ClientValidationFunction="validateFunction"/>
<ajax:ValidatorCalloutExtender runat="server" ID="vceEdit" TargetControlID="cvEdit" />
code JavaScript:
function validateFunction(source, arguments) {
var options = document.getElementById(source.controltovalidate).options;
for (var i = 0; i < options.length; i++) {
if (options[i].selected == true) {
args.IsValid = true;
return;
}
}
args.IsValid = false;
}
Comme je l'ai dit, depuis la dernière (un) élément sélectionné sera le seul sélectionné dans les 'options' tableau, la fonction validation retourne toujours vrai ...
je pensais à une autre peuplant ARRA y dans une autre fonction javascript en tant que «vrai tableau sélectionné» et comparez ses valeurs avec l'option sélectionnée chaque fois que la fonction se déclenche .. mais je pense qu'il devrait y avoir un meilleur moyen.
Alors ... Y at-il une voie à suivre tout droit d'obtenir tous les éléments sélectionnés dans une zone de liste de MultiChoice en javascript?
Désolé pour le retard, je n'ai pas eu le temps à cause d'un projet nouveau et urgent que nous avions reçu ... encore dessus, putain ... À la réponse, dans un regard il semble que votre code fasse la même chose comme le mien, donc 'options [i] .selected == true' ne se déclencherait qu'une fois dans mon code, avec la dernière option cliquée ... Mes outils de développement ne définissent jamais plus d'un 'selected = true'. Peut-être que j'ai déclaré la liste de sélection dans le mauvais sens? J'espère avoir encore du temps lundi pour faire un autre examen et peut-être réouvrir la question. En attendant, je ne peux pas vous donner la prime, au moins un upvote pour l'effort, merci !!! –
En fait, je remarque que ce serait la même chose que de vous récompenser ou non, comme je l'ai lu, alors générosité pour vous, vous l'avez mérité. De toute façon ma solution de contournement serait de créer un tableau JavaScript, et chaque fois que le listbox.selected se déclenche, basculer cet état de l'index (vrai <---> false) ... sera de retour avec des nouvelles je suppose;) –