2016-05-16 4 views
1

Я использовал функцию, которая активируется при нажатии событий. Я хочу сделать то же самое с помощью событий нажатия клавиш.Добавление событий нажатия клавиш, которые используют существующую функцию

function addToText(target) { 

    var exp = target.target; 
    //alert(exp.value); 
    if (newExp) { 

    //clearText(); 
    document.getElementById("expression").value = exp.value; 
    newExp=false; 

    } 

    else 
    document.getElementById("expression").value = document.getElementById("expression").value + exp.value; 

} 

Эта функция используется. Как изменить его для использования и для событий нажатия клавиш. В настоящее время он не работает изначально (для событий нажатия клавиш). Но после нажатия один раз, любое нажатие клавиши возвращает тот же номер, который был ранее нажат.

Полный код здесь: http://codepen.io/jpninanjohn/pen/JXVpYb?editors=1010

ответ

2

Вот ваше окончательное решение, я проверяю, если charcode находится между 48 и 57, что это значит, число от 0 до 9.

document.addEventListener('keypress', function(e){ 
     if (e.which >= 48 && e.which <= 57) 
     document.getElementById("expression").value+= String.fromCharCode(e.which); 
    }); 
+0

Хорошо. Это работает, но только после того, как я щелкнул внутри калькулятора. – leoOrion

+0

Вы уверены? Я проверил ваш отредактированный кодфей, и он работает, даже если я выхожу за пределы калькулятора и начинаю вводить текст. –

+0

Да, я снова проверил, и он работает и для внешнего клика. Но почему первый щелчок ??? – leoOrion

0

Вы можете использовать этот FUNCTION-

window.onkeyup = function(e) { 
    var key = e.keyCode ? e.keyCode : e.which; 
document.getElementById("expression").value += key-48; //for getting the number 

    alert(key); 
    if (key == 38) { 
     //whatever 
    }else if (key == 40) { 
     // whatever 
    } 
} 

source

И вам нужно, чтобы добавить + к =

document.getElementById("expression").value+= 

вместо -

document.getElementById("expression").value= 
+0

вар ключ = e.keyCode? e.keyCode: e.which; Что делает эта линия? – leoOrion

+0

Это «inline if» –

0

Вы должны добавить другую функцию для события нажатия клавиши, потому что событие нажатия клавиши получить значение нажатой клавиши по-другому, не target.target

function addToTextKeypress(event) { 

    var exp = String.fromCharCode(event.keyCode); 
    //alert(exp); 
    if (newExp) { 

    //clearText(); 
    document.getElementById("expression").value = exp; 
    newExp=false; 

    } 

    else 
    document.getElementById("expression").value = document.getElementById("expression").value + exp; 

} 

Позже вам нужно удалить exp.value, поскольку она имеет прямое значение

 Смежные вопросы

  • Нет связанных вопросов^_^