![]() |
Как отключить кнопку TAB в TextField?
Есть текстовое поле (TextField). При нажатии кнопки TAB, текстовое поле теряет фокус. Задача: при нажатии этой самой кнопки оставаться там же, на том же месте. Есть варианты? :confused:
|
см. TextField.tabEnabled
|
Видно я не правильно понят. Свойство tabEnabled отключает или включает данный элемент в порядок обхода . Т.е. если отключить это свойство, то при обходе по TAB на этот элемент не наткнешься. Моя же проблема в другом: как будучи внутри TextField при нажатии TAB оставаться в нем же без каких-либо изменений фокуса или любых других реакций.
|
можно всех того..
for(i in this) this[i].tabEnabled=false;//только в этом мувике или Object.prototype.tabEnabled=false;//во всех |
вот придумал как решить для одного текст.поля, не трогая других (если табуляцию между остальными надо сохранить):
tf.onSetFocus=function(){ Object.prototype.tabEnabled=false; } tf.onKillFocus=function(){ Object.prototype.tabEnabled=true; } |
Silin , все казалось бы логично. Но только ты забыл это испробовать в деле.
Я пробовал и этот вариант. Если флэш запущен автономно в плэйре, то происходит следующее: при нажатии TAB фокус возвращается на себя же (вроде бы то что нам нужно), но вот только выделяет весь текст (селектит). Даже если побороть это выделение, это не решает проблему, потому как мне нужно использовать этот Флэш не автономно, а в html-странице. А в этом случае происходит нечто так же вполне логичное: фокус из textField переходит на следующий элемент страницы, либо (если такого нет) в адресную строку. Вот такой вот конфуз. Еще варианты? :rolleyes: |
Цитата:
a тебе надо отменить табуляцию не только между объектами мувика, но и в браузере.. не думаю, что средствами флэша это удастся сделать |
Я думаю что путь решения немного в другом. Я почти до него добрался, но все же встретил проблему.
Путь таков: необходимо перехватить событие onKeyDown со значение клавиши TAB и вернуть при этом фокус обратно (setFocus). Перехватить получается, вернуть фокус нет. Судя по всему порядок перехвата этой клавиши таков: сначала я задаю ему свое действие, потом Флэш - свое. Возникает вопрос, можно ли переопределить полностью это самое действие Флэша, либо изменить этот порядок - сначала Флэш, а потом я? |
силин указал на проблему, которую тяжело обойти.
если бы речь шла о свф, проигрывающемся в standalone плеере, то решение с установкой фокуса при событии onKeyDown как раз подходит. но когда у тебя ролик проигрывается в браузере, на TAB реагирует и ролик, и оболочка в которой он находится. т.е. фокус теряет не просто текстовое поле в ролике - но и сам ролик. |
Что-то всё запутанно.
А так не катит? все_объекты.onSetFocus=function(){ setFocus( "обратно" ); } И вообще, насколько я понимаю, фокус часто нужен для управления объектами без мыша (клавой, например) -- так почему нельзя убрать вообще использование фокуса и просто ловить клаву? Ежели фокус всегда на одном объекте? |
можно попробовать воспользоваться fscommand("trapallkeys", "true");
но я не уверен что это поможет :) проверяй. Цитата:
и к тому же, текстовое поле не должно навечно удерживать фокус. |
Пока что решение не найдено. Все из вышеперечисленного не является решением. Возможно этого решения и нет. Если кто-то может это опровергнуть - ему слово. А пока я благодарю всех за участие .
Иду обходить проблему с другого конца :) |
2Гудвин
Поделился бы хоть, зачем так издеваться над тем, у чего вполне ясное предназначение. |
Секретов нет, расскрытых секретов тоже :)
У меня кстати по ходу возник вопрос. Можно ли отследить комбинации клавиш? Если да, то каким образом узнать код какой-либо комбинации? Например Ctrl+Tab? :) |
Код:
this.createTextField("tf",0,0,0,60,20); |
| Часовой пояс GMT +4, время: 10:20. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.