جافا سكريبت:كيف يمكنني التحقق مما إذا كان المفتاح الذي تم الضغط عليه في حقل النموذج هو رقم (0 - 9)؟

StackOverflow https://stackoverflow.com/questions/1402112

  •  05-07-2019
  •  | 
  •  

سؤال

أنا أستخدم حدث onkeyup في حقل نموذج في JavaScript، وأريد التحقق مما إذا كان المفتاح الذي تم الضغط عليه هو رقم رقمي - على سبيل المثال.0 - 9، حتى أتمكن بعد ذلك من فعل شيء ما بالمدخلات.

<input type="text" onkeyup="" />

هل سأحتاج إلى استخدام Regex لهذا؟

شكرًا

نصائح أخرى

استخدم event.key للحصول على القيمة الفعلية. للتحقق مما إذا صحيح، ومجرد استخدام isFinite

input.addEventListener("keydown", function(event) {
    const isNumber = isFinite(event.key);
});

والخيار الآخر:

const isNumber = /^[0-9]$/i.test(event.key)

وحلا HTML أسهل سيكون لاستخدام نوع number الإدخال. انها تحد لأرقام فقط (نوع من).

<input type="number">

وفي كلتا الحالتين، يجب تنظيف جميع مدخلات المستخدم مع:

string.replace(/[^0-9]/g,'');

والسماح فقط 0-9، سيتم ابتلع رسائل أخرى.

$('#id').keypress(function (e) {
            var validkeys = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'];
            if (validkeys.indexOf(e.key) < 0)
                return false;
        });

ولقد استخدمت الدالة التالية لمعرفة ما اذا كان سلسلة معين هو رقم أو لا

// Validate Numeric inputs
function isNumber(o) {
    return o == '' || !isNaN(o - 0);
}

وعلى افتراض أن رمز المفتاح الخاص بك على keyup أو الحدث KeyDown في متغير الرمز الرئيسي:

var keyCode = e.keyCode || e.which;
if (keyCode >= 96 && keyCode <= 105) {
        // Numpad keys
        keyCode -= 48;
}
console.log(isNumber(String.fromCharCode(keyCode)));

وانظر هذا:

http://www.javascriptkit.com/javatutors/javascriptkey2.shtml

<script type="text/javascript">
function displayunicode(e){
var unicode=e.keyCode? e.keyCode : e.charCode
if unicode >= 48 && unicode <= 57 {
    alert('number')
}
else{
}
    alert('nonnumber')
}
</script>
<form>
<input type="text" size="2" maxlength="1" onkeyup="displayunicode(event); this.select()" />
</form>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top