[Javascript] Erhalte alle ausgewählten Werte von ListBox (clientseitig)


Answers

let a1 = [
{
    Selected:false,
},
{
    Selected:false
},
{
    Selected:false
}];

if (a1.some (i => i.Selected)) console.log (true); sonst console.log (false);

Vielleicht was du willst

Question

Ich versuche, einen benutzerdefinierten Validator in JavaScript für meine vb.net-Seite zu implementieren. Dieser Validator sollte überprüfen, ob in einem Multi-Listen-Listenfeld keine ausgewählten Werte vorhanden sind, die ein Fehler-Popup anzeigen, wenn dies der Fall ist.

Die Sache ist, ich möchte es Client-Seite tun, aber in meiner 'validateFunction' Funktion bekomme ich nur das letzte ausgewählte Element (oder nicht ausgewählt, wenn es bereits ausgewählt wurde). Ich weiß, wie man es im Code-Behind-Code macht, aber ich möchte es clientseitig machen.

Aspx-Code:

 <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" />

JavaScript-Code:

 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;
 }

Wie ich bereits sagte, da das letzte (nicht) ausgewählte Element das einzige ist, das im Array 'options' ausgewählt wurde, gibt die Validierungsfunktion immer true zurück ...

Ich dachte daran, ein anderes Array in einer anderen JavaScript-Funktion als "True Selected Array" zu füllen und seine Werte mit der gewählten Option jedes Mal zu vergleichen, wenn die Funktion ausgelöst wird. Aber ich denke, es sollte einen besseren Weg geben.

Also ... Gibt es einen direkten Weg, um alle ausgewählten Elemente aus einem Multi-Choice-Listbox in Javascript zu bekommen?