|
|
|
| есть скрипт, который обрабатывает нажатие клавиш
------
<script language="JavaScript">
var channel=0;
var maxchannel = 60;
function keyAction(e) {
switch (e.which)
{
case 52:
document.location="site/ch/?pnum=0";
break;
case 1073742149:
ASTB.SetMouseState(true);
break;
default:
AVMedia.Kill();
alert("Unknown handled key: " + e.which);
document.location="http://site/";
break;
}
}
function initial_startup(p)
{
channel = p;
ASTB.SetMouseState(false);
}
</script>
-------
всего клавиш 10, от 0 до 9 ... как в этом случае набрать 19 или 79?... и отобразить на экране то что я набираю?
типа....
case 108:
function_MyFun()
{ ..........
}
подскажите, плиз... | |
|
|
|
|
|
|
|
для: Kender
(08.10.2005 в 15:58)
| | Б-р-р-р :-).
С какого места что не получается ?
Нужно ограницить ввод только цифрами и не больше 2-х цифр ?
Цифры с клавиатуры или кнопки ? | |
|
|
|
|
|
|
|
для: Duran
(10.10.2005 в 08:26)
| | с двумя клавишами вроде разобрались ... всплыла проблема с циклом...
=============
<script language="JavaScript">
var channel=0;
var maxchannel = 20;
var cha=99;
var chb=0;
var run=1;
var t = 50
function keyAction(e)
{
if (e.which > 47)
{
if (e.which < 58)
{
if (cha == 99)
{
cha = e.which - 48;
while (run == 1)
{
t = t + 50;
if (t == 1000000)
{
chb = cha;
cha = 0;
run = 0;
document.location="/ch/?pnum=" + cha + chb;
}
}
}
else
{
run = 0;
chb = e.which - 48;
document.location="/?pnum=" + cha + chb;
}
}
}
else
======================
когда скрипт доходит до while все зависает и ждет, пока if не выполнит условий, т.е. не реагирует на повторное нажатие. Если цикл убрать, то все в порядке ...
цикл нужен для того, чтобы, в случае если нажали только на одну клавишу, через определенное время все же завершить выполнение скрипта с условием по умолчанию.
и вторая часть вопроса, как вывести на экран, допустим, номер клавиши которая нажата в данный момент, текстом или графикой ... как понимаю, если делать рисунком, то их нужно предварительно загрузить в массив... | |
|
|
|
|
|
|
|
для: Kender
(10.10.2005 в 17:39)
| | Так цикл в IE вообще-то грузит браузер так, что он ничего другого не может делать, ни параллельного процесса на JS, ни прерывания. Надо организовывать через setTimeout(,).
А что сложного в выводе номера? <body onKeypress=document.all[div1].innerText=event.keyCode; onKeyUp=document.all[div1].innerText=""> . | |
|
|
|
|
|
|
|
для: 12345
(12.10.2005 в 03:24)
| | пробовал через setTimeout(,).
варианта работы получилось два
в первом, таймаут не работал, потому как браузер ждал второго нажатия кнопки,
а во втором, жмешь ты на кнопку или нет, все равно, пока время не закончится, никто, ничего, делать не будет :))
Может я его как-то не правильно использовал? | |
|
|
|
|
|
|
|
для: Kender
(12.10.2005 в 06:33)
| |
<body onKeypress=press() onKeyUp=upK() onKeyDown=if(event.repeat)event.returnValue=!1>
<pre>Сценарий:
0) реагировать только на цифры;
1) ждать по отпусканию кнопки время tOut; если не нажато 2-й раз, выводить лидирующий 0;
2) если нажата 2-я цифра, выводить вслед за 1-й;
3) подавлять автоповторы нажатий;
4) по выводу 2 цифр делать серый фон индикатора;
5) 3-е нажатие цифры считается 1-м.
Реализация:</pre>
<script>d=document;tOut=900;press1=ww=0;co='dddddd';
function press(){clearTimeout(ww);if(event.keyCode>47&&event.keyCode<58){with(d.all['div1']){
if(press1==0){ innerText=event.keyCode-48;style.backgroundColor='';press1=1;
}else{innerText+=event.keyCode-48;style.backgroundColor=co;press1=0;}
}}}
function upK(){k=event.keyCode;if(press1==1&&(k>47&&k<58||k>95&&k<106)){
ww=setTimeout("with(d.all['div1']){innerText='0'+innerText;style.backgroundColor=co;}press1=0;",tOut);
}}
</script><center>
<div id=div1 style=font-size:22;width:10%;border-style:solid;border-width:1;border-color:firebrick>00</div>
|
| |
|
|
|
|
|
|
|
для: 12345
(12.10.2005 в 14:46)
| | Спасиб! | |
|
|
|