簡體   English   中英

為什么此javascript onkeypress事件不起作用?

[英]Why this javascript onkeypress event is not working?

我不確定問題出在我的代碼還是瀏覽器上,我已經嘗試了所有已知的方法,但是找不到解決方案。

這是我的代碼:

var postcode = document.getElementById("deliveryPostcode");
    postcode.onkeypress = checkForDigits;

我有一個表單輸入,我想阻止用戶輸入非數字字符。 因此,僅允許使用0-9之間的數字。 但是,無論我在文本框中輸入什么,都不會收到警報框。 我正在使用Firefox。

function checkForDigits(keyPressEvent) {
    var keyCode = keyPressEvent.keyCode;
    if (keyCode < 48 || keyCode > 57) {
        alert("Not a digit");
    }
} 

onkeypress與Firefox有一些問題,請嘗試onkeydown正常工作

function checkForDigits(keyPressEvent) {
    var keyCode = keyPressEvent.keyCode;
    if (keyCode < 48 || keyCode > 57) {
        alert(keyCode);
    }
} 

var postcode = document.getElementById("deliveryPostcode");
    postcode.onkeydown = checkForDigits;

JsFiddle

var postcode = document.getElementById("deliveryPostcode");
postcode.onkeyup = checkForDigits;
function checkForDigits(keyPressEvent) {
        var reg = /^\d+$/;
        var val=document.getElementById('deliveryPostcode').value
    if(!reg.test(val))
        alert('not a digit!');
}

嗯,看來這可能是問題所在:

在keypress事件中,所按下鍵的Unicode值存儲在keyCodecharCode屬性中,而不是兩者都存儲。

資源

因此,解決此問題的實際跨瀏覽器解決方案是查看瀏覽器使用了哪個keyCodecharCode並相應地讀取它。

var postcode = document.getElementById("deliveryPostcode");
postcode.onkeypress = checkForDigits;

function checkForDigits(event) {

    // Selects charCode or keyCode accordingly, based on which exists
    var chCode = ("charCode" in event) ? event.charCode : event.keyCode;

    if (chCode < 48 || chCode > 57) {

        alert("Not a digit");

        // return false means that letter won't be placed to input
        return false;
    }

}

JS范例

因此,為了進一步閱讀,我建議: keyCode屬性

干杯。

我認為這與您的html有關。 看看這個JSFiddle 它正在Chrome中為我工作。

<form>
   <input type="text" name="firstname" id="deliveryPostcode">
</form>

也許您的ID為“ deliveryPostcode”的元素不是textarea還是類型為text的輸入?

<textarea id="deliveryPostcode">
</textarea>

這是工作示例: http : //jsfiddle.net/G9Y6c/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM