Próbuję zaimplementować niestandardowy weryfikator w JavaScript dla mojej strony vb.net. Ten weryfikator powinien sprawdzić, czy w liście z wieloma językami nie ma żadnych wybranych wartości, pokazując komunikat o błędzie, jeśli tak.pobierz wszystkie wybrane wartości z ListBox (strona klienta)
Chodzi o to, że chcę to zrobić po stronie klienta, ale w funkcji "validateFunction" dostaję tylko ostatnio wybrany (lub niezaznaczony, jeśli został już wybrany) element. Wiem, jak to zrobić w kodzie z kodem, ale chcę to zrobić po stronie klienta.
kod 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" />
kod 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;
}
Jak powiedziałem, od ostatniego (un) wybrany produkt będzie tylko jeden wybrany w 'Opcje' array, funkcja sprawdzania poprawności zawsze zwróci true ...
Pomyślałem o zaludnieniu innej arry y w innej funkcji javascript jako "prawdziwie wybranej tablicy" i porównać jej wartości z wybraną opcją za każdym razem, gdy funkcja się uruchamia, ale myślę, że powinien istnieć lepszy sposób.
Więc ... Czy istnieje prosty sposób, aby uzyskać WSZYSTKIE wybrane elementy z listy słów wielojęzycznych w javascript?
Przepraszamy za opóźnienie, nie miałem czasu ze względu na nowy i pilny projekt, który otrzymaliśmy ... wciąż na nim, cholernie ... Do odpowiedzi, wygląda na to, że twój kod robi to samo jako moje, więc 'options [i] .selected == true' tylko wystrzeli jeden raz w moim kodzie, z ostatnią klikniętą opcją ... Moje narzędzia programistyczne nigdy nie ustawiają więcej niż jeden" selected = true ". Może zadeklarowałem listbox w niewłaściwy sposób? Mam nadzieję, że w poniedziałek pozostało trochę czasu, aby dokonać dalszej oceny i być może ponownie otworzyć pytanie. W międzyczasie nie mogę dać ci hojności, przynajmniej uprowadzenie za wysiłek, dzięki! –
Właściwie to zauważyłem, że byłoby to takie samo nagradzanie cię, czy nie, jak przeczytałem, tak hojnie dla ciebie, zasłużyłeś na to. W każdym razie moje obejście spowoduje utworzenie tablicy JavaScript, a za każdym razem, gdy listbox.selected fires, przełączy stan indeksu '(true <---> false) ... wrócę z wiadomościami;) –