[英]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;
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值存儲在keyCode或charCode屬性中,而不是兩者都存儲。
因此,解決此問題的實際跨瀏覽器解決方案是查看瀏覽器使用了哪個keyCode
或charCode
並相應地讀取它。
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;
}
}
因此,為了進一步閱讀,我建議: 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.