Получить все выбранные значения из списка ListBox (на стороне клиента)
Я пытаюсь реализовать пользовательский валидатор в JavaScript для моей страницы vb.net. Этот валидатор должен проверить, нет ли в списке многозадачности выбранных значений, показывая, что ошибка появляется, если это так.
Дело в том, что я хочу сделать это на стороне клиента, но в моей функции validateFunction я получаю только последний выбранный (или не выбранный, если он уже выбран) элемент. Я знаю, как это сделать с кодом кода, но я хочу сделать это на стороне клиента.
код 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" />
Код 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;
}
Как я уже сказал, поскольку последний (un) выбранный элемент будет единственным, выбранным в массиве "options", функция проверки всегда вернет true...
Я думал о заполнении другого массива в другой функции javascript как "истинный выбранный массив" и сравнивать его значения с выбранным параметром каждый раз, когда срабатывает функция. но я думаю, что должен быть лучший способ.
Итак... Есть ли прямой способ получить ВСЕ выбранные элементы из многозадачного списка в javascript?
Ответы
Ответ 1
Ваш вопрос немного неясен, и ваша функция кажется работающей, но то, что я отвечу здесь, является последней частью вашего вопроса. Итак... Есть ли прямой способ получить ВСЕ выбранные элементы из многозадачного списка в JavaScript?
Попробуйте эту функцию js
<script type="text/javascript">
function validateFunction() {
var options = document.getElementById('<% = this.lbEdit.ClientID %>').options;
var selectedItems;
for (var i = 0; i < options.length; i++) {
if (options[i].selected == true) {
if (selectedItems) {
selectedItems = selectedItems + ";" + options[i].value;
}
else {
selectedItems = options[i].value;
}
}
}
if (selectedItems) {
alert(selectedItems);
return true;
}
else {
alert("No item was selected");
return false;
}
}
</script>
И это код aspx, я удалил валидатор
<asp:ListBox ID="lbEdit" runat="server" SelectionMode="Multiple" >
</asp:ListBox>
<asp:Button ID="test" runat="server" Text="send" OnClientClick="return validateFunction();"/>
В инструментах разработчика вашего браузера вы можете увидеть подробную информацию обо всех свойствах вашего объекта.
![введите описание изображения здесь]()
Ответ 2
let a1 = [
{
Selected:false,
},
{
Selected:false
},
{
Selected:false
}];
if (a1.some(i = > i.Selected)) console.log(истина);
еще console.log(ложь);
Возможно, что вы хотите