Как бы вы удостоверились, что кто-то будет проверять не более двух вариантов? Это очень странный вопрос для поиска в Google, и я не могу найти статью. Я бы предпочел метод JS.
<select multiple>
<option value = "cheese">Cheese</option>
<option value = "pepperoni">Pepperoni</option>
<option value = "sausage">Sausage</option>
<option value = "mushrooms">Mushrooms</option>
</select>
Вы бы посмотрели на selectedOptions.length
события select click
select, а затем не разрешили бы дальнейший выбор, когда это число больше 2.
$(function() {
// Get references to the different select elements and convert
// them into Arrays:
var pizzaSelect =
Array.prototype.slice.call(
document.querySelectorAll("#pizzaOptions > option"));
var sodaSelect =
Array.prototype.slice.call(
document.querySelectorAll("#soda > option"));
// Loop over each list's options, executing the supplied
// callback function for each one.
pizzaSelect.forEach(checkSelectionCount);
sodaSelect.forEach(checkSelectionCount);
function checkSelectionCount(opt, idx, ary){
// Add a click event listener to each option:
opt.addEventListener("click", function(event){
// Is a 3rd option clicked and being selected?
if (this.parentNode.selectedOptions.length === 3 && this.selected) {
this.selected = false; // De-select it.
}
});
}
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select multiple id = "pizzaOptions">
<option value = "cheese">Cheese</option>
<option value = "pepperoni">Pepperoni</option>
<option value = "sausage">Sausage</option>
<option value = "mushrooms">Mushrooms</option>
</select>
<br><br>
<select multiple id = "soda">
<option value = "coke">Coke</option>
<option value = "sprite">Sprite</option>
<option value = "dr_pepper">Dr. Pepper</option>
</select>
хорошо, спасибо за помощь. был бы плюс один, но пока не могу. буду экспериментировать с вашим решением.
как бы вы let options = Array.prototype.slice.call(document.querySelectorAll("option"));
, если бы у вас было несколько списков опций <select> </selects>. Например, если у вас есть пицца, газированные напитки и хлебные палочки. Предполагая, что вы сделали бы getElementById (#pizzaOptions)
@ Chessmaster1 Вы просто измените селектор, переданный в .querySelectorAll()
, как в document.querySelectorAll("#pizzaOptions > option")
, чтобы получить все элементы option
, которые являются дочерними в select
, с помощью id = pizzaOptions
.
Я создал код, не думаю, что он на 100% работает: codepen.io/ScottFSchmidt/pen/QzGWGP?editors=1010. Я, наверное, тоже должен использовать опцию контрольного списка сейчас, когда я думаю об этом. кто-то не сможет выбрать параметры этого метода вверху, а затем внизу.
@ Chessmaster1 Вы не дублировали код, который я показал в вашем CodePen. Я исправил Pen, а также изменил ответ здесь, чтобы показать, как это сделать, в нескольких списках.
Вам нужно присвоить значения переменной, а затем проверить эту переменную на нужную длину. В этом случае 2.