fevid
fevid

Reputation: 743

issue with eventlistner keypress

I've an event listner so for some keys it does some thing different and so on, first if not working pressing "-" does not trigger the commands written but other two works perfectly! second one submits as soon as entering Enter and third one denies anything other than numbers.

what could be the issue with first one?

document.querySelector(".header__input").addEventListener("keypress", function (evt) {
if (evt.keyCode === 109 || evt.which === 109 || evt.keyCode === 189 || evt.which === 189){
    operation = "-";
    alert("sucecss")
}
else if (evt.keyCode === 13 || evt.which === 13){
    starter();
}
else if (evt.which < 48 || evt.which > 57)
{
    evt.preventDefault();
}
});

Upvotes: 0

Views: 36

Answers (2)

fevid
fevid

Reputation: 743

doing some tweaking was able to fix the numpad issue with keydown. thanks to jacob.

document.querySelector(".header__input").addEventListener("keydown", function (evt) {

if (evt.keyCode === 13 || evt.which === 13){
    starter();
}
else if (evt.which < 48 || evt.which > 57 && event.which < 97){   
        evt.preventDefault();
}
else if (evt.which > 105){   
    if(evt.keyCode === 109 || evt.which === 109 || evt.keyCode === 189 || evt.which === 189){
            operation = "-";
    }
else{
    evt.preventDefault();
}
}
});

Upvotes: 0

Jacob Paine
Jacob Paine

Reputation: 81

I'm not sure exactly why you're having a problem on the subtract symbol. However, I should point out that keypress is deprecated. Mozilla docs

I suggest using keydown. Like this:

var x = document;
x.addEventListener('keydown', function (evt) {
    if (evt.keyCode === 109 || evt.which === 109 || evt.keyCode === 189 || evt.which === 189) {
        operation = "-";
        alert("sucecss")
    }
    else if (evt.keyCode === 13 || evt.which === 13) {
        starter();
    }
    else if (evt.which < 48 || evt.which > 57) {
        evt.preventDefault();
    }
})

Upvotes: 1

Related Questions