Xpoint
   [напомнить пароль]

Как запретить, отменить выделение текста в таблице

Метки: [без меток]
2003-04-08 18:35:42 [обр] Gassan Gousseinov[досье]
ситуация следующая
у меня длиная таблица и пользователь, нажимая на нее, отмечает ряды.(меняется bgcolor)
Теперь поступило предложение выловить нажатия на кнопки мышки с нажатой клавишей Shift,Ctrl. Но вместе с полями выделяется и текст, а window.event.returnValue = false не действует.
Помогите, пожалуйста!
спустя 7 минут [обр] Андрей М.(0/375)[досье]
спустя 7 минут [обр] Gassan Gousseinov[досье]
уууу, неужели только таким способом?:\
спустя 1 час 52 минуты [обр] Сергей Золотухин(0/126)[досье]
Gassan Gousseinov: если позволите, отступлю от темы и расскажу как бы это делал я. Я бы делал так: рядом с каждым рядом кнопочки "добавить в селекшн", "удалить из селекшн" + на все ряды: "выделить/невыделить все". Очень просто и понятно. Спорить со мной необязательно — понятно, что решений много :-)
спустя 12 часов [обр] Виктор Ганский aka GunSky(1/435)[досье]
Сергей Золотухин:
Тогда уж checkbox'ы
спустя 3 часа 56 минут [обр] Сергей Золотухин(0/126)[досье]
Виктор Ганский aka GunSky: ни в коем случае. checkbox — это checkbox и не нужно его сюда мешать. Хотя если немного изменить подачу этого механизма пользователю, то пойдут и checkboxы (но только не в таком виде как сейчас). В общем это тема не местная, поэтому обсуждать ее тут смысла нет %)
спустя 5 часов [обр] Gassan Gousseinov[досье]
Спасибо огромное всем за идеи..
просто чуваку, который в дальнейшем будет юзать интерфеис, сидяшему на корточках под турбиной в каком нибудь цеху при 30ти и более градусной жаре с лаптопом на коленях, будет в геморой тыкать в чекбоксы. я остановился на unselectable
;)
спустя 3 минуты [обр] ё(3/1328)[досье]

:))))

Сегодня вообще удачный день.
Но это просто гениально, клянусь.
Низкий вам поклон, Gassan Gousseinov.

спустя 2 минуты [обр] Андрей М.(0/375)[досье]
Предлагаю в usability перенести:)))))
спустя 1 час 7 минут [обр] Виктор Ганский aka GunSky(1/435)[досье]
Да-да давайте в usability.
А то столько идей сразу появилось, как это клево можно сделать, чтоб было удобнее с лаптопом под турбиной пользовать :)
С этого и надо было тему начинать :)
спустя 35 минут [обр] Сергей Круглов(10/2057)[досье]
М Перенесено из форума "Программирование::JavaScript::Разное"
спустя 56 минут [обр] Виктор Ганский aka GunSky(1/435)[досье]

Все-таки checkbox тут напрашивается, разве что доработать напильником.
Построить ряд checkbox'ов и ловить на них Shift. (Ctrl тут как бы итак всегда нажат получается :)

Из плюсов
Остается функциональность при отключенном JS
Решается проблема борьбы с "излишне рьяным" выделением.

Из минусов
Надо убедить "чувака под турбиной", что он хочет к этому привыкнуть.
(хотя эта же проблема, по-моему, была и у изначальной постановки)

Для особо гурманов - ловить на checkbox'ах onmousedown onmousemove onmouseup
По сути сделать выделение, т.е. нажимаешь на бокс и тянешь вниз-вверх и соседние загораются/тухнут, как отпустишь запоминаются :)

спустя 12 минут [обр] Agar -Agar(0/68)[досье]
Что-то у меня фантазия не срабатывает. Для чего и в каком виде может такое понадобиться? А главное, почему на JS, и зачем для этого просить чувака залазить под турбину? :)
Кстати, "Чувак" по-башкирски — "Кастрированный баран".
спустя 3 часа 28 минут [обр] Кирилл Вятчин aka eril[досье]

Информации мало, но на основе того, что тут сказано наиболее разумным представляется как раз вариант с чекбоксами. Если я правильно понял, оператору придется работать в условиях ограниченной подвижности. Множественное выделением строк с использованием „Ctrl“ требует одновременного задействования двух рук, а вариант с чекбоксами — только одной.

Кроме того, действительно странно, что все это дело реализовывается на JS.

спустя 3 часа 13 минут [обр] Роман Цандер aka JustVoice(0/102)[досье]

Gassan Gousseinov:

чуваку, ... сидяшему на корточках под турбиной в каком нибудь цеху ... с лаптопом на коленях,будет в геморой тыкать в чекбоксы

а если

<tr>
<td><label for="rowN">Достаточно одного клика на строку, чекбокс сам засветится</label></td>
<td><input type="checkbox" name="rowN" id="rowN" value="on"></td>
</tr>

?..

спустя 8 часов [обр] Сергей Золотухин(0/126)[досье]

Господа, у элемента с кодовым названием checkbox есть вполне определенная функция и он не нуждается в том, чтобы вы учили его делать что-то еще :)

Самое простое правило для тех, что желает делать простые и удобные интерфейсы: не заставляйте элементы, созданные для ввода текста, воспроизводить музыку. :-)

спустя 3 дня [обр] Кирилл Вятчин aka eril[досье]
Сергей Золотухин:
Так это и есть функция чекбокса — предоставление возможности множественного выбора. А тут как раз о множественном выборе речь и идет, не так ли?
спустя 19 часов [обр] Сергей Золотухин(0/126)[досье]
Кирилл Вятчин aka eril: не так :) Чекбокс — это утверждение, с которым соглашаешься или опровергаешь. Не более того. В данном случае утверждение должно быть таким: "включить эту строку в выбор". На мой взгляд задачу можно решить красивее.
спустя 6 часов [обр] Кирилл Вятчин aka eril[досье]

Сергей Золотухин:
Безусловно можно, но у нас для этого мало информации.
Кстати, подобный вариант (с чекбоксами) часто используется в почтовых сервисах, где работа с почтой происходит через веб-интерфейс. При помощи чекбоксов происходит выбор нескольких писем одновременно для удаления или перемещения в другую папку (как тут: http://www.vyatchin.usethics.ru/i/mail.gif ).

Учитывая ограничения веба, неплохой вариант.

Судя по всему, у автора треда подобная ситуация.

спустя 13 часов [обр] Сергей Золотухин(0/126)[досье]

Кирилл Вятчин aka eril: я видел подобные интерфейсы — ничего прекрасного :-) Основной недостаток, на мой взгляд, в том, что сообщение с отмеченным чекбоксом не кажется выделенным и пока не въедешь в "что и как", не сообразишь что имеется в виду. Для примера: сравните способ выделения сообщения в www-интерфейсах и в спец. программах и оцените разницу (разговоры о том, что на www этого сделать нельзя, не принимаются :)

с появлением DOM интерфейса большинство ограничений осталось лишь в головах.

спустя 48 минут [обр] Андрей М.(0/375)[досье]
Вот это как бы "экспромт от безделья" :))
http://andreimoss.pisem.net/table.html
можно оценить что юзабельней - чекбоксы или яваскрипт:)
спустя 3 месяца 7 дней [обр] Марьяна(5/305)[досье]

Сергей Золотухин:

Чекбокс — это утверждение, с которым соглашаешься или опровергаешь.

На основании чего у вас сформировалась такая трактовка назначения чекбокса?

спустя 20 часов [обр] Сергей Золотухин(0/126)[досье]
Марьяна:
Вопрос не по существу, но отвечу: на основании личного опыта и опыта окружающих меня коллег.
спустя 5 часов [обр] Марьяна(5/305)[досье]
Сергей Золотухин:
И что же говорит ваш личный опыт и опыт ваших коллег по этому вопросу?
спустя 17 часов [обр] Сергей Золотухин(0/126)[досье]

Марьяна:

Чекбокс — это утверждение, с которым соглашаешься или опровергаешь.

мне казалось, вы это уже читали один раз и даже цитировали. В чем смысл вопроса?

Может быть раскроете свою мысль (если есть :) или будете ходить вокруг да около?

спустя 21 минуту [обр] Евгений Бондарев aka Eugene Bond(3/1600)[досье]
<FORM>
<INPUT TYPE=checkbox NAME=brandy> Вы перестали пить коньяк по-утрам? (© Карлсон)
<INPUT TYPE=submit>
</FORM>
спустя 17 минут [обр] Дмитрий Горяинов aka "три галки"(1/542)[досье]

Евгений Бондарев aka Eugene Bond:

э нет... ты путаешь теплое с мягким (c) Гоблин :-)

<p>
Вы перестали пить коньяк по-утрам?
<ol>
<li> <input type=radio name="q1" value="yes"> - Да
<li> <input type=radio name="q1" value="no"> - Нет
</ol>
<p>
Укажите, какие коньяка марки Вы предпочитаете?
<ol>
<li> <input type=checkbox name="q2" value="id1"> - Ани 
<li> <input type=checkbox name="q2" value="id2"> - Двин
<li> <input type=checkbox name="q2" value="id3"> - Арарат
</ol>
<input type=submit>
спустя 1 час 45 минут [обр] Сергей Золотухин(0/126)[досье]
Евгений Бондарев aka Eugene Bond:
примерно, только текст должен быть: "я перестал пить коньяк"
спустя 1 час 29 минут [обр] Дмитрий Горяинов aka "три галки"(1/542)[досье]

Сергей Золотухин: все это несколько офф-топик, но... отошлю ка я Вас к спецификации.

Итак http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.2.1

checkboxes

Checkboxes (and radio buttons) are on/off switches that may be toggled by the user. A switch is "on" when the control element's checked attribute is set. When a form is submitted, only "on" checkbox controls can become successful. Several checkboxes in a form may share the same control name. Thus, for example, checkboxes allow users to select several values for the same property. The INPUT element is used to create a checkbox control.

Переводя это на русский язык, мы можем понять, что смысл данного элемента управления - это переключатель (флажок) двух положений - да/нет.

Что мне нравится в спецификациях - это то, что люди, пишушие их не просто изобретали "непонятно что для непонятно чего", но и думали о применимости того или иного изобретения. Обратите внимание на фразу: "... Thus, for example, checkboxes allow users to select several values for the same property..." - авторы придлагают (предполагают?) пример использования.

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

Для того, чтобы опровергнуть или подтвердить, т.е. сделать однозначный выбор одной из предлагаемых альтернатив скорее служат "radio buttons", которые (как нам повествует срецификация :-) очень похожи (подобны) checkboxes за одним ма-_а_-_аленьким_ исключением: для одноименных элементов управления этого типа только один может быть выбран (находится в положении "вкл" или "да") за раз...

Checkboxes по смыслу применимости являются родственниками элемента, реализуемого через тэг <SELECT ...>...</SELECT>. Авторы спецификации называют его "menu" и говорят, что он служит для представления пользователю вариантов на выбор.

Мне (лично) слово "menu" в этом контексте никогда не нравилось. Тут надо бы было сильно подумать - то ли у тебя тут "меню", толи выпадающий (или пролистываемый) список с возможностью множественного выбора а-ля <SELECT multiple>?

Т.е. я бы себе позволил это именовать как "the list with multiple (optional) selection". Ну да ладно, простим их?

Так что элементы типа checkboxes, как и элементы SELECT ( http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.6 ) стоит рассматривать как реализующие возможность выбора (в том числе и множественного), а функцию опровергать - подтверждать оставим для radio buttons, isn't it?


по теме (возможно :-)

  1. Ну сама идея не заставлять упорно тыкать в ма-а-аленький квадратик - это хорошо, это пять.

ИМХО - я бы оставил там checkbox'ы для наглядности. Но добавил бы реакцию на клик по ячейке таблицы, визуализировав ячейки а-ля кнопки для нажатия. Что-то типа:

<style type="text/css">
TD.checkbutton {
  border-style: outset;
  border-width: 2px;
  border-color: lightgray;
  background-color: #c0c0c0;
  width: 80pt;
}
TD.checkbutton1 {
  border-style: inset;
  border-width: 2px;
  border-color: lightgray;
  background-color: #c0c0c0;
  width: 80pt;
}
</style>
<table border=0>
<tr><td class="checkbutton"><input type=checkbox name="choice" value="1"> choice 1 </td></tr>
<tr><td class="checkbutton"><input type=checkbox name="choice" value="2"> choice 2 </td></tr>
<tr><td class="checkbutton1"><input type=checkbox name="choice" value="3" checked> choice 2 </td></tr>
</table>

В общем это я о визуализации скорее, ибо решение на JavaScript вроде уже нашли...

  1. Вот чего я не могу понять - это почему человек с ноутбуком под турбиной сидит и общается через веб-интерфейс браузера, вместо того, чтобы общаться в каком-либо клиенте с GUI интерфейсом? Вот этого я не понимаю...

И, кстати, прикольно там "под турбиной" GPRS ловит? Или он за собой бабину с витой парой тащит? ;-)))

спустя 20 минут [обр] Сергей Золотухин(0/126)[досье]
Дмитрий Горяинов aka "три галки":
Спасибо, что не отослали на сайт с более отдаленными от обсуждаемой темы текстами. Соответственно и написаное вами по офтопику тоже очень похоже не более чем на ваши личные переживания. Особенно "Checkboxes по смыслу применимости являются родственниками элемента, реализуемого через тэг <SELECT ...>...</SELECT>."
спустя 18 минут [обр] Дмитрий Горяинов aka "три галки"(1/542)[досье]

Сергей Золотухин: да пожалуйста.

Вот только не ясно, почему о своем случае Вы пишите как о полученном

на основании личного опыта и опыта окружающих меня коллег

а о моем отзываетесь как

не более чем на ваши личные переживания

ну о-очень убедительно и авторитетно вы так все расставили, ага...

спустя 6 минут [обр] Виктор Ганский aka GunSky(1/435)[досье]
Сергей Золотухин:
А в чем вы видите разницу? Они же делают одно и тоже.
спустя 26 минут [обр] ё(3/1328)[досье]

Да, интересная дискуссия.

Соглашаетесь ли вы с тем, что чекбокс есть утверждение, с которым соглашаешься или опровергаешь, или вы опровергаете, что чекбокс есть утверждение, которое опровергаешь или с которым соглашаешься? И так далее, рекурсивно.

...Но случались и другие дни: они брались за работу рьяно, с помпой вели протокол, составляли длинные меморандумы — ни разу, правда, не доведя их до конца — и в спорах по поводу того, о чем они спорят, забирались в совершенные дебри, с изощренными препирательствами из-за дефиниций, с пространными отступлениями — даже с угрозами обратиться к начальству. И вдруг жизнь уходила из них, и они сидели вокруг стола, глядя друг на друга погасшими глазами, — словно привидения, которые рассеиваются при первом крике петуха.

Вдруг вспомнилось почему-то.

спустя 25 минут [обр] Сергей Золотухин(0/126)[досье]

Виктор Ганский aka GunSky:
Вы имеете в виду разницу между select и checkbox? Пож. пример:

Выберите один из двух вариантов:
<select>
  <option>1</option>
  <option>2</option>
  <option>3</option>
</select>

реализуйте это же с помошью checkox пож. Вообще такое ощущение, что вы шутите :)

спустя 6 минут [обр] Марьяна(5/305)[досье]
Выберите один из двух вариантов:
Есть три типа людей: те, которые умеют считать, и те, которые нет. :-)
спустя 14 минут [обр] Сергей Золотухин(0/126)[досье]
Марьяна:
:) изначально писал про три, потом подумалось что достаточно и двух (недоредактировал :) Правильный вариант:
Выберите один из двух вариантов: 
<select> 
  <option>1</option> 
  <option>2</option> 
</select>
спустя 4 минуты [обр] Виктор Ганский aka GunSky(1/435)[досье]

Сергей Золотухин:
Вы привели аналог radio

Выберите сколько-нибудь вариантов или не выбирайте совсем: 
<select size=3 multiple>
<option>1</option>
<option>2</option>
<option>3</option>
</select>

Не сильно похоже на да/нет.
Хотя смотря как задать вопрос конечно. Но тогда что угодно можно свести к да/нет.

Марьяна:
Есть 10 типов людей, которые понимают двоичную систему, и которые не понимают :)

спустя 1 минуту [обр] Марьяна(5/305)[досье]

Сергей Золотухин:
Речь о том, что если описывать сущность чекбокса предельно кратко, то это скорее возможность выбора, в том числе множественного, как написал уже выше Горыныч. Это классическая трактовка, которая согласовывается с определением элемента в спецификации и типичными случаями использования.

Пример 1.
Укажите ваши любимые элементы:
[x] checkbox
[x] select
[x] text

Пример 2.
[x] Получать рассылку новостей компании.

Оба примера являются с точки зрения пользователя его выбором, в то время как первый пример сложно проассоциировать с моделью "согласен/не согласен".

Возможно, на вашей практике встречались другие случаи и сформировались другие ассоциации, о чем я и спрашивала, но Дунька здесь верно подметил, что в столь общей формулировке, без привязки к конкретной практической задаче, вопрос несколько надуман. Так что пусть военная тайна вашего опыта останется с Вами. Успехов.

спустя 9 минут [обр] Сергей Золотухин(0/126)[досье]

Виктор Ганский aka GunSky:
я привел пример того, что checkbox и select — не одно и тоже, и ничего более :)

Марьяна:
про "Укажите ваши любимые элементы" не подумал (видимо, в момент написания мозг не работал). вместо того, чтобы осторожно подбираться к теме, можно было бы сразу об этом написать :)

спустя 5 минут [обр] Сергей Круглов(10/2057)[досье]
checkbox = select multiple
radio = select
спустя 36 минут [обр] Сергей Золотухин(0/126)[досье]
Сергей Круглов:
монументально :)
Powered by POEM™ Engine Copyright © 2002-2005