اذهب إلى المحتوى

السؤال

نشر

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

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

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

Recommended Posts

  • 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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...