Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > String.fromCharCode(event.keyCode)


Автор: Madferit 18.7.2005, 11:49
Столкнулся с проблемой:

При написании функции валидации данных формы, для многих из нажатых символов (например '.' ',' '-' , цифры в правой части клавиатуры...) String.fromCharCode(event.keyCode) возвращает строковое представление совсем не того символа что я нажал.

Кто-нибудь сталкивался с подобным? В чем причина и как с этим бороться?

Автор: Madferit 18.7.2005, 12:27
Я тут подебажил: оказывется в event.keyCode лежит неверный код символа.

Полный код такой:

Код

<Input type="text" name="price" onkeydown="ValidatePrice()" />


Код

function ValidatePrice()
{
     var priceStr = document.all("inputForm").price.value;             
    
     priceStr = priceStr.toString();    
     var newStr;
     alert(window.event.keyCode);
     switch (event.keyCode)
     {
       case 8: //backspase
            newStr = priceStr.substring(1, priceStr.length-1);
            break;
       case 190: //'.'
          newStr = priceStr + ".";
            break;
       default:       
            newStr = priceStr + String.fromCharCode(event.keyCode);
     }    
     newStr = newStr.toString();
     var numRegExpr = /^[-]?\d*\.?\d*$/;
     if (numRegExpr.test(newStr))
            event.returnValue = true;
     else
            event.returnValue = false;
}

Автор: Sardar 18.7.2005, 12:59
Madferit во первых не стоит использовать document.all

Во вторых если нужен код символа, то ловишь onkeypress. В третьих под мозиллой нужно считывать charCode.

Вот пример: http://forum.vingrad.ru/index.php?showtopic=53916&view=findpost&p=427632

Автор: Madferit 18.7.2005, 14:21
Sardar, исправил - работает - спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)