Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   не учитывается последняя введенная цифра (https://javascript.ru/forum/misc/3098-ne-uchityvaetsya-poslednyaya-vvedennaya-cifra.html)

Griha 18.03.2009 13:36

не учитывается последняя введенная цифра
 
Здравствуйте, я в програмировании новичок. Вот попытался создать простую форму где выполняется ариф.действие. Например умножение на 2. Но почему-то последняя введенная цифра не учитывается. Например, ввел 45 в ответе 8, ввел 456 в ответе 90. И так со всеми действиями. Как исправить?
Вот код:

Код:

<html><head>
<script language="JavaScript">
<!--
function ClearWidLen(r)  //функция ClearWidLen очищает значение формы
{
  document.all[r].value = "";
 }

function vsego1() {
ch=Number(document.all["ch1"].value);
document.all["vsego"].value=ch*2;
}
// --></script>
</head>
<body>
<input  size="5" onClick=ClearWidLen("ch1"); onkeydown=vsego1(); name="ch1" >х2=
<input  size="5" onClick=ClearWidLen("vsego"); name="vsego" >, </p>
</body>
</html>

Событие "onkeyup" не применил т.к. оно не работает.
Из-за чего может не работать событие "onkeyup"?

Gvozd 18.03.2009 13:45

не учитывается последняя цифра, потому что на момент onkeydown она еще не введена
onkeyup отлично работает.
<html><head>
<script language="JavaScript">
<!-- 
function ClearWidLen(r)   //функция ClearWidLen очищает значение формы
{
  document.all[r].value = "";
 }

function vsego1() {
ch=Number(document.all["ch1"].value);
document.all["vsego"].value=ch*2;
}
// --></script>
</head>
<body>
<input  size="5" onClick=ClearWidLen("ch1"); onkeyup=vsego1(); name="ch1" >х2= 
<input  size="5" onClick=ClearWidLen("vsego"); name="vsego" >, </p>
</body>
</html>

Griha 18.03.2009 14:45

А не подскажите что сделать чтоб на момент onkeydown учитывалась последняя цифра?
У меня onkeydown и onkeyPress работают, а onkeyup не работает. Система XPSP2.

Kolyaj 18.03.2009 14:48

Цитата:

Сообщение от Griha
А не подскажите что сделать чтоб на момент onkeydown учитывалась последняя цифра?

onkeydown срабатывает до введения символа. Можно делать вычисления через 10 миллисекунд с помощью setTimeout, к этому времени символ уже введется. Но это, конечно, грязный хак.

Gvozd 18.03.2009 15:25

Цитата:

Сообщение от Griha
У меня onkeydown и onkeyPress работают, а onkeyup не работает. Система XPSP2.

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

Griha 20.03.2009 09:53

to Kolyaj
Спасибо за подсказку. Про грязный хак можно сказать
Цитата:

Ноги, крылья - главное хвост!
to Gvozd
Про радиус кривизны, я же писал
Цитата:

я в програмировании новичок
onkeyup и ваш код не работает в браузере MyIE (это надстройка к Internet Explorer ). Причем в самом Internet Explorer все работает.

Gvozd 20.03.2009 10:21

Griha,
ну, так почитайте на девелоп-сайте вашей браузерной надстройки что с ней не так.
а вообще, попробуйте привести страницу в божеский вид:
0)обернуть атрибуты в кавычки
1)убрать languge в srcipt.он там нафик не нужен.актуально type="text/javascript"
2)код в коментарии оборчаивать тоже ни к чему
3)document.all является также нежелательным к употреблению ввиду некросбраузерности.в разделе статей про DOM на этом сайте написано как правильно получать элементы

если после этого не заработает, то не знаю что вам делать.
но очевидно что это проблема исключительно вашего myie
PS помимо осла в мире еще полно хороших, удобных, красивых,функциональных браузеров.
это я к тому что тестировать надо во всех по возможности.
и говорить не "не работает", а "не работает в там, там, и там", если это так есть.вот если нигде не заработало, то стоит задуматся, а правильно ли пишите
а если где-нибудь заработало, то стоит выяснить какие отличия


Часовой пояс GMT +3, время: 23:08.