2015-01-17 2 views
0
if(keyEvent.keyCode == 8){ 
     $scope.erase(); 
    } 

    else if(keyEvent.keyCode === 107){ 
    console.log("+"); 
    $scope.inputToCal('+') 
    } 

    else if(keyEvent.keyCode === 109){ 
    console.log("-"); 
    $scope.inputToCal('-') 
    } 

    else if(keyEvent.keyCode === 16){ 
    console.log("*"); 
    $scope.inputToCal('*') 
} 
    } 

    else if(keyEvent.keyCode === 111){ 
    console.log("/"); 
    $scope.inputToCal('/') 
    } 

Я пытался сделать калькулятор, который поймал «keydown».В keyEvent, как я могу поймать ключ «*»?

Я могу поймать эти ключи, «+», «-», «/».

Эти ключи кода являются "107", "109", "111"

Однако, есть одна проблема.

Я не могу поймать ключ «*».

Есть ли решение проблемы?

Или мне нужно определить новый массив, чтобы поймать ключ «Shift» (keyCode: 16) и «8» (keyCode: 56)?

Извините, я новичок о keyEvent. Я жду решения ... Пожалуйста, помогите мне!

+1

Если вы используете 'keypress' вместо этого вы будете ловить символы, которые требуют сдвига быть нажата – adeneo

ответ

0

Вы должны обращаться с нажатием клавиши сдвига отдельно.

function handleKeyDown(e) { 
var shiftPressed=0; 
var event = (e==null ? event:e); 
shiftPressed=event.shiftKey; 
if ((shiftPressed)&& (event.keyCode==56)) 
    alert ("You pressed * key"); 
return true; 
} 

Демо: http://jsfiddle.net/soxj0v54/1/

Для вашего кода будет выглядеть как-

else if(keyEvent.keyCode === 56 && keyEvent.shiftKey){ 
    console.log("*"); 
    $scope.inputToCal('*') 
} 
+1

Спасибо! !! ты помог мне! – nujabes

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