Jump to content
  • 0

Отключить ctrl и shift на multiple select


SIC
 Share

Question

Здравствуйте, уважаемые форумчане.

Столкнулся с проблемой - никак не удаётся отключить множественный выбор на селекте, если он отображается как multiple. Я написал скрипт, который может просто отменить предыдущий выбор и оставить только новый, т.е. своей цели я добился, но отмену легко заметить, т.к. на экране какое-то мгновение выбрано сразу два пункта. Поэтому я пошёл с другой стороны и решил вообще запретить пользоваться кнопками ctrl и shift над такими селектами, но не тут-то было. В общем примеры:

html код:

<select id="multi1" class="multiple-select" name="multi1[]" size="6" multiple>
<option value="2" selected>bald endede zuerst 2</option>
<option value="3">bald endede 3</option>
<option value="4">bald endede 6</option>
<option value="5">bald endede zuerst 7</option>
<option value="6">bald endede zuerst 8</option>
</select>

js первый способ:


$(document).ready(function() {
$('.multiple-select').triggerHandler('keydown');
$('.multiple-select').keydown(function(event){
var key;
if (event) key=event.which;
if(key==17 || key==16) {return false;}
});
});

js второй способ:


$(document).ready(function() {
$('.multiple-select').bind('keydown', function(event){
var key;
if (event) key=event.which;
if(key==17 || key==16) {return false;}
});
});

Если законсолить переменную кнопки вот так:

if(key==17 || key==16) {console.log(key); return false;}

то код выводится верный, т.е. все условия выполняются все ветки отрабатывают как надо.

В основе своей они одинаковы отличаются только способом перехвата события, но к сожалению ни один из них не отменяет возможности выбора сразу нескольких пунктов с помощью кнопок. Подскажи пожалуйста верное решение.

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

SIC,

Если не нужен множественный выбор, зачем делать поле multiple?

Логичный вопрос. Есть две причины:

1. Это удобнее выбора в простом выпадающем списке и на многих сайтах это реализовано. Пример форма создания лота на молотке, кто зарегистрирован может сам посомтреть, для остальных <a href="http://fastpic.ru/view/44/2012/1016/bab934f1cddb09f51a75eb5d07f5e26d.jpg.html" target="_blank">скрин</a>. Кстати там кнопки не работают и выбор осуществляется только по одному пункту, но отдебажить код, который это позволяет сделать мне не удалось. Может кто-то уже сталкивался с такой задачей и знает как это сделано.

2. Есть утверждённый проект сайта, есть первая тестовая версия и результаты проведённого тестирования, которое показывает, что простыми селектами выбирать категорию труднее для юзера, соответсвенно есть и поправки в проекте, которые говорят, что именно так должен выглядить выбор.

А preventDefault не надо делать в jquery? Я не в курсе.

prevenDefault я так понимаю отменит действие по-умолчанию, а именно действие по выбору option. В любом случае я пробовал его не работает, пункты по-прежнему выбираются вместе.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy