• 0

كيف أقوم بالتحقق من نص به حروف عربية باستخدام JavaScript؟

لدي حقل خاص بالتعليقات علي المواضيع بالموقع واريد معرفة إذا كان المستخدم بدأ بكتابة حروف عربية ام إنجليزية،  وجعل النص في محازاة اليمين

إذا كان يكتب لغة عربية، و في محازاة اليسار إذا كان يكتب باللغة الإنجليزية.

هل يوجد طريقة تقوم بهذا العمل في JavaScript؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 1

بالتأكيد يوجد طريقة.
هُناك دالة في JavaScript تُسمى test هذه الدالة تقوم بالبحث عن اي مُطابق بأستخدام التعابير القياسيه
Regular Expression 

سنفترض أن حقل التعليق هو عباره عن عُنصر <textarea id="comment"></textarea> سنقوم بتتبُع هذا العُنصر بحيث إذا قام المستخدم ببدأ الكتابة يتم التحقق مباشرةً من أول حرف تم كتابتهُ وهذا سيتم باستخدام الحدث Event onkeyup.
هكذا:

var comment = document.getElementById('comment');
comment.onkeyup = function (){
    var string = this.value;
    var substring = string.substring(0,1);
    var pattern = /[\u0600-\u06FF]/;
    this.dir = pattern.test(substring) ? 'rtl' : 'ltr';
};

لنشرح ماذا حدث في هذا المثال بالتفصيل.
اولاً قمنا بأستدعاء العُنصر textarea عن طريق ال id الخاص بهِ وقمنا بتخزينهُ في متغير باسم comment

ثم بعد ذلك قمنا بتتبُع هذا العُنصر عن طريق onkeyup بحيث عندما يقوم المستخدم بكتابة اي شيء نقوم بعمل الأتي:

انشأنا متغير باسم string واسندنا له المحتوى الذي تم كتابتة عن طريق this.value وthis تعني متغير comment اي العُنصر textarea و value تعني القيمه التي بداخل العُنصر وهي عبارة عن نص.

بعد ذلك انشأنا مُتغير جديد باسم substring وقمنا بجلب أول حرف فقط من النص المكتوب في حقل التعليق باستخدام دالة substring.

ثم قمنا بانشاء متغير آخر باسم pattern وهذا عبارة عن كائن Object يحتوي علي رموز بأسلوب يُطابق التعابير القياسية وهذه التعابير هي جزئين اﻷول \u0600 وهذا يعني اول محرف في اللغة العربيه والثاني \u06FF هذا آخر محرف في اللغة العربية.
وللمزيد حول هذه التعابير يمكنك التعرف عليها من هنا
فهذا يعني اننا سنبحث عن اي حرف في اللغة العربيه من بداية اول حرف في اللغة إلى آخر حرف.

ثم قمنا اخيراً باستخدام دالة test للأختبار إذا كانت بداية اﻷحرف عربيه ام إنجليزية.
ولسرعة الأستجابة قمت بالتحقق السريع مع الأختبار في الوقت نفسه. 
فإذا كان هناك أحرف عربيه سيتم تغيير قيمة السمه attribute dir إلى القيمة rtl أي المحازاة إلى اليمين.
وإذا لم يتحقق الشرط ستكون القيمه ltr اي المحازاه إلى اليسار.

وبهذا نكون قد تحققنا من وجود احرف باللغة العربيه في بداية النص ام لا.

من فضلك تفقد الملف المٌرفق.

index.html

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

حل في غاية البساطة، دون الحاجة لكتابة أي كود JavaScript:

<input type="text" dir="auto"/>

طبعاً شريطة أن لا تكون قد ضبطت اتجاه العنصر مسبقاً باستخدام CSS.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن