السماح بكتابة الأرقام فقط في TextBox في ASP.Net


من بين المشاكل التي تصادف مبرمجي الويب أثناء إنجاز أعمالهم مشكل إدارة الأخطاء، فأحيانا يلزم تحديد طبيعة القيمة المراد إدخالها، كأن يسمح بكتابة الأرقام فقط في مربع نص خاص بإدخال العمر، أو أن يسمح بإدخال قيمة تاريخية وفق تنسيق معين داخل مربع نص خاص بإدخال تاريخ التوظيف، وهكذا دواليك...
لمنع كتابة النصوص في مربع نص TextBox بتقنية ASP.Net يلزمنا إقحام الجافا سكريبت في الموضوع نظرا لندرة الأحداث وافتقار معظم اللغات الديناميكية للأحداث الموافقة لكل عملية يقوم بها المستخدم على عكس تطبيقات الويندوز.

لنفترض أن مربع النص لدينا في صفحة الكود سورس كما يلي:

<asp:TextBox ID="txtAge" runat="server" />

علينا إنشاء دالة بالجافاسكريبت وليكن اسمها مثلا CheckNumeric()
  

  <script type="text/javascript">
        function CheckNumeric() {
            if ((event.keyCode < 48 || event.keyCode > 57)) {
                event.returnValue = false;
            }
        }
    </script>

الدالة CheckNumeric() تتحقق من مجال الأزرار المضغوطة فإن كان ترميزها في نظام ASCII أصغر من 48 أو أكبر من 57، أي أنه لا ينتمي إلى مجال الأرقام من 0 إلى 9 (لأن ترميز ASCII للأرقام يبدأ من 48 وينتهي ب 57) يقوم بإلغاء عملية الكتابة، وفي حال العكس (أي إدخال قيم رقمية)  سيسمح بالكتابة.
بعدها في الحدث onkeypress التابع لمربع النص نقوم باستدعاء الدالة التي قمنا بإنشائها:

<asp:TextBox ID="txtAge" runat="server" onkeypress="CheckNumeric()" />

الآن قم بتجربة الكتابة في مربع النص، ستلاحظ بأنه صار لا يسمح سوى بإدخال القيم الرقمية.

يمكنك العودة إلى جدول ترميز ASCII للاستفاضة في التمثيل الرقمي لكل رمز من رموز لوحة المفاتيح من الرابط التالي:

http://www.asciitable.com/

هناك تعليقان (2):

  1. وفقك الله لكل خير أخي خالد
    أريد بعض المراجع الشاملة في ASP.Net مكتوبة أو مرئية وبأي لغة وعلى رأسها سيدة اللغات.
    المهم ان يكون شاملا وبتدرج منطقي من البداية حتى الاحتراف.
    ولك من جزيل الشكر ومن الله جزيل الثواب.

    ردحذف
  2. جزاك الله خيرا ولكن لو حضرتك ممكن شرح كامل سواء كتاب او فيديو لasp.net سواء webform او mvc

    ردحذف