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