JavaScripter's, need your help!

Angry
Уже с Приветом
Posts: 1491
Joined: 02 Jul 2003 22:47

JavaScripter's, need your help!

Post by Angry »

Я в джаваскрипте новичек, может более опытные товарщи подскажут, как заблокировать курсорные клавиши, и backspace в TextArea? А так же возможно ли блокирование перемещения курсора мышкой в textarea? Или же перемещение его в конец текста.

Спасибо!
User avatar
KVA
Уже с Приветом
Posts: 5382
Joined: 03 Feb 1999 10:01
Location: NJ, USA

Post by KVA »

Смотрите в сторону events в java script:

onkeydown
onkeyup
onmousedown
etc.

IMHO все что вы хотите возмоно сделать. Вопрос зачем? Особенно с мышкой непонятно. Может TEXTAREA сделать readonly и ничего не будет редактировться?
Angry
Уже с Приветом
Posts: 1491
Joined: 02 Jul 2003 22:47

Post by Angry »

KVA wrote:Смотрите в сторону events в java script:

onkeydown
onkeyup
onmousedown
etc.

IMHO все что вы хотите возмоно сделать. Вопрос зачем? Особенно с мышкой непонятно. Может TEXTAREA сделать readonly и ничего не будет редактировться?



В моем проекте мне нужно, чтобы пользователь мог вводить, но не
мог редактировать текст. Я пользуюсь onkeypress, но после моего
обработчика события идет обработчик события браузера.
Можно ли в javascript перекрыть обработчик события полностью? -
это идеально решило бы мою проблему.
uniqueman
Уже с Приветом
Posts: 2013
Joined: 16 Mar 2002 10:01
Location: New York City

Post by uniqueman »

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


У меня тоже один раз встала такая задача. Я обошелся проще. Создал два текстовых окна. Одно основное, в котором находится текст, который нельзя редактировать (read only проще говоря), второе окно вспомогательное, куда пользователь может вводить все что угодно. После нажатися на клавишу Save, то что он ввел во втором окне добавляется в первое, которое уже не подлежит редактированию.

не знаю подходит ли Вам такое
Angry
Уже с Приветом
Posts: 1491
Joined: 02 Jul 2003 22:47

Post by Angry »

uniqueman wrote:
В моем проекте мне нужно, чтобы пользователь мог вводить, но не
мог редактировать текст.


У меня тоже один раз встала такая задача. Я обошелся проще. Создал два текстовых окна. Одно основное, в котором находится текст, который нельзя редактировать (read only проще говоря), второе окно вспомогательное, куда пользователь может вводить все что угодно. После нажатися на клавишу Save, то что он ввел во втором окне добавляется в первое, которое уже не подлежит редактированию.

не знаю подходит ли Вам такое


К сожалению, мне такое решение не подходит
User avatar
KVA
Уже с Приветом
Posts: 5382
Joined: 03 Feb 1999 10:01
Location: NJ, USA

Post by KVA »

Angry wrote: В моем проекте мне нужно, чтобы пользователь мог вводить, но не
мог редактировать текст. Я пользуюсь onkeypress, но после моего
обработчика события идет обработчик события браузера.
Можно ли в javascript перекрыть обработчик события полностью? -
это идеально решило бы мою проблему.


Вообще-то вроде можно. Смотришь что пришло от пользователя и если backspace или еще что-то нежелательно - cancel event. Посмотри returnValue property для event.
uniqueman
Уже с Приветом
Posts: 2013
Joined: 16 Mar 2002 10:01
Location: New York City

Post by uniqueman »

Angry wrote:
uniqueman wrote:
В моем проекте мне нужно, чтобы пользователь мог вводить, но не
мог редактировать текст.


У меня тоже один раз встала такая задача. Я обошелся проще. Создал два текстовых окна. Одно основное, в котором находится текст, который нельзя редактировать (read only проще говоря), второе окно вспомогательное, куда пользователь может вводить все что угодно. После нажатися на клавишу Save, то что он ввел во втором окне добавляется в первое, которое уже не подлежит редактированию.

не знаю подходит ли Вам такое


К сожалению, мне такое решение не подходит


а если пользователь при вводе случайно ошибся и ему надо затереть то что он ввел и ввести другое, то как вы в этом случае обойдетесь?
Angry
Уже с Приветом
Posts: 1491
Joined: 02 Jul 2003 22:47

Post by Angry »

KVA wrote:
Angry wrote: В моем проекте мне нужно, чтобы пользователь мог вводить, но не
мог редактировать текст. Я пользуюсь onkeypress, но после моего
обработчика события идет обработчик события браузера.
Можно ли в javascript перекрыть обработчик события полностью? -
это идеально решило бы мою проблему.


Вообще-то вроде можно. Смотришь что пришло от пользователя и если backspace или еще что-то нежелательно - cancel event. Посмотри returnValue property для event.


Этот cancel event мне и нужен! Как же его сделать?
Angry
Уже с Приветом
Posts: 1491
Joined: 02 Jul 2003 22:47

Post by Angry »

uniqueman wrote:
Angry wrote:
uniqueman wrote:
В моем проекте мне нужно, чтобы пользователь мог вводить, но не
мог редактировать текст.


У меня тоже один раз встала такая задача. Я обошелся проще. Создал два текстовых окна. Одно основное, в котором находится текст, который нельзя редактировать (read only проще говоря), второе окно вспомогательное, куда пользователь может вводить все что угодно. После нажатися на клавишу Save, то что он ввел во втором окне добавляется в первое, которое уже не подлежит редактированию.

не знаю подходит ли Вам такое


К сожалению, мне такое решение не подходит


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


В том-то и дело что по постановке задачи ему запрещено затирать :wink:
User avatar
KVA
Уже с Приветом
Posts: 5382
Joined: 03 Feb 1999 10:01
Location: NJ, USA

Post by KVA »

Angry wrote:Этот cancel event мне и нужен! Как же его сделать?


Event - это object. У object есть properties. Чтобы cancel event надо в обработчике event-а присвоить property returnValue значание. Какое именно см. MSDN. Я из головы так не помню.
Krivonos
Posts: 10
Joined: 09 Mar 2002 10:01
Location: Ukraine

Re: JavaScripter's, need your help!

Post by Krivonos »

-deleted-
Last edited by Krivonos on 29 Aug 2003 09:25, edited 1 time in total.
Krivonos
Posts: 10
Joined: 09 Mar 2002 10:01
Location: Ukraine

Re: JavaScripter's, need your help!

Post by Krivonos »

Вот функция-обработчик события OnKeypress:

function OnKeypress()
{
if (/*нажата нужная клавиша*/)
{
}
else
{
event.returnValue=false;
}
}

Кстати, форму курсора тоже можно менять.
Angry
Уже с Приветом
Posts: 1491
Joined: 02 Jul 2003 22:47

Re: JavaScripter's, need your help!

Post by Angry »

Krivonos wrote:Вот функция-обработчик события OnKeypress:

function OnKeypress()
{
if (/*нажата нужная клавиша*/)
{
}
else
{
event.returnValue=false;
}
}

Кстати, форму курсора тоже можно менять.


Ну, да - теоретически должно работать, но практически эксплорер не реагирует на backspace куак на keypress (только как на keydown). Но даже если в keydown прописать event.returnValue=false; в textarea буква всеравно введется. Тоже самое и для onclick и onmousedown - хоть event.returnValue=false; поставил, курсор на щелчек перемещается :pain1:
ладно, выйду из положения через readonly.
User avatar
KVA
Уже с Приветом
Posts: 5382
Joined: 03 Feb 1999 10:01
Location: NJ, USA

Post by KVA »

Из MSDN:
As of Microsoft® Internet Explorer 4.0, the onkeypress event fires and can be canceled for the following keys:
Letters: A - Z (uppercase and lowercase)
Numerals: 0 - 9
Symbols: ! @ # $ % ^ & * ( ) _ - + = < [ ] { } , . / ? \ | ' ` " ~
System: ESC, SPACEBAR, ENTER

Теперь понятно почему backspace не работает?
Angry
Уже с Приветом
Posts: 1491
Joined: 02 Jul 2003 22:47

Post by Angry »

KVA wrote:Из MSDN:
As of Microsoft® Internet Explorer 4.0, the onkeypress event fires and can be canceled for the following keys:
Letters: A - Z (uppercase and lowercase)
Numerals: 0 - 9
Symbols: ! @ # $ % ^ & * ( ) _ - + = < [ ] { } , . / ? \ | ' ` " ~
System: ESC, SPACEBAR, ENTER

Теперь понятно почему backspace не работает?


Да это я понял, но решение же все равно искать надо
User avatar
KVA
Уже с Приветом
Posts: 5382
Joined: 03 Feb 1999 10:01
Location: NJ, USA

Post by KVA »

Angry wrote:Да это я понял, но решение же все равно искать надо


Странно, но onmousedown почему-то нельзя cancel. Глюк?

А все таки что у вас за задач такая? Почему можно вводить, но нельзя редактировать?
Angry
Уже с Приветом
Posts: 1491
Joined: 02 Jul 2003 22:47

Post by Angry »

KVA wrote:
Angry wrote:Да это я понял, но решение же все равно искать надо


Странно, но onmousedown почему-то нельзя cancel. Глюк?

А все таки что у вас за задач такая? Почему можно вводить, но нельзя редактировать?


ответил в лс

Return to “Вопросы и новости IT”