У меня есть поле множественного выбора с группой параметров, например:

<select id="sel_salaryrange" name="salaryranges[]" size="8" multiple="1">
    <optgroup label="PKR" class="PKR">
        <option value="1">15000 - 20000</option>
        <option value="2">18000 - 35000</option>
        <option value="3" selected="selected">50000 - 100000</option>
    </optgroup>
    <optgroup label="SAR" class="SAR">
        <option value="4">1000 - 2000</option>
        <option value="6" selected="selected">3000 - 5000</option>
    </optgroup>
    <optgroup label="USD" class="USD">
        <option value="5">1000 - 3000</option>
    </optgroup>
</select>

Т. е. есть 3 названия группы опций: «PKR», «SAR» и «USD», где 2 элемента выбраны в группе опций «PKR» и «SAR». Теперь я хочу запретить множественный выбор в одной и той же группе опций, как это будет решаться с помощью jQuery или JavaScript, JQuery будет предпочтительнее.

Я был бы очень благодарен вам в этом отношении.

Благодарность

0
user242437 3 Янв 2010 в 00:18
2
Вы должны учитывать, что у вашего пользователя не включен JavaScript.
 – 
Gumbo
3 Янв 2010 в 00:25
1
Javascript всегда включен на компьютере конечного пользователя
 – 
user242437
4 Янв 2010 в 18:47

2 ответа

Это немного сложно — я не думаю, что есть какие-либо подходящие события, которые вы можете прослушивать в тегах <option>, чтобы проверять, когда они выбраны. Вам придется прослушивать событие change в теге <select> и отслеживать, что выбрано, а что нет.

Не могли бы вы разделить его на несколько <select>, у которых нет атрибута multiple?

1
Paul D. Waite 3 Янв 2010 в 00:35
На самом деле я хочу такое же поле выбора с несколькими вариантами. Это требование модуля.
 – 
user242437
4 Янв 2010 в 18:48
@user242437 user242437: возможно, требования следует изменить.
 – 
Paul D. Waite
15 Сен 2011 в 15:54

Попробуй это:

$('select#sel_salaryrange option').mousedown(function() {
    $(this).parent().find('option:selected').removeAttr('selected');
});

Когда пользователь щелкает опцию, этот код очищает все выборы в текущей группе опций и позволяет выбрать выбранную опцию.

У этого кода есть один очевидный недостаток: пользователь по-прежнему может выбирать несколько значений с помощью клавиатуры.

Я бы предпочел сделать это с отдельными радиовходами или, по крайней мере, с отдельными выборками, которые не являются multiple.

1
Tatu Ulmanen 3 Янв 2010 в 00:45
Спасибо за ваш ответ, но не могли бы вы также дать мне подсказку, чтобы избежать ввода с клавиатуры.
 – 
user242437
4 Янв 2010 в 18:50