میتونی بسته به نیاز سرور ساید و کلاینت ساید یا هر دو چک کنی.
بحثش مفصل هست اگر بخوای سیستم رو به این صورت پیاده کنی که مثلا کاربر اصلا هیچ چیز دیگه نتونه تایپ کنه. برای اینترنت اکسپلورر و فایرفاکس فرق میکنه و پیچیده هست و نکات زیادی داره.
تابعی هم بنده نوشته بودم که شاید در این راه بکار بیاد:
<html>
<body style="background-color: #EEF3E2">
<h3>Java Script</h3>
<div style="font-size: 15pt; white-space: pre">
<script language="javascript">
function is_ara_fa(txt) {
return /^([\u0600-\u06FF]|\s)+$/.test(txt);
}
txt_arr=new Array(
"مادرم روزت مبارک"
, "مادر - Mother",
"سلام!",
"سلام",
"سلام بچه ها، خونهء ما اینجاست؛"
, "\xD8",
"گچ پژ ّ َ ِ ِ ُ ً ٍ "
, "ی ی ک ک",
"فارسی+عربی",
"نقطه.",
"بدون نقطه",
"اعداد فارسی ۱۲۳۴",
"۴/۲",
"۴÷۲",
"ش=س",
" "
);
for(i in txt_arr) {
document.write('«<span style="color: blue">', txt_arr[i], "</span>» ");
if(is_ara_fa(txt_arr[i])) document.write('<span style="color: green">is fully Arabic/Farsi</span>');
else document.write('<span style="color: red">contains non-Arabic/Farsi</span>');
document.write('<hr />');
}
</script>
</div>
<h3>Java Script</h3>
</body>
</html>
البته این جزیی از یک مطلب دیگه بود که در فروم دیگری درج کرده بودم؛ تابع تشخیص متون فارسی در پی اچ پی بود موضوع بحث که این قسمت کلاینت ساید برای تکمیلش اضافه شد.
حالا این تابع میتونه ورودی رو وقت سابمیت چک کنه و اگر فارسی/عربی بود قبول نکنه و پیغام مقتضی به کاربر بده. البته احتمالا باید تکمیلش کنی و کاراکترهای بخصوصی رو بهش اضافه/کم کنی. فعلا فقط فاصله به یادم میاد.
--------
ضمنا با تغییر رنج یونیکد مربوطه میتونی مستقیما انگلیسیش کنی که بهتره (فرضا طرف اگر چینی هم وارد کنه اجازه نمیده).
اما کلا چک کردن انگلیسی بنظرم کار خیلی ساده تری هست و از راههای دیگه ای میشه براحتی انجامش داد.
شاید این چیزی که اینجا گفتم و گذاشتم به کارت نیاد و مستقیما مربوط نباشه، اما شاید ایده دهنده باشه. برای چک کردن ورودی فارسی در پی اچ پی مشکل وجود داشت چون پی اچ پی پشتیبانی Native از یونیکد نداره درحال حاضر (وعده برای نسخهء ۶).
چیزی مثل تایپ کردن دونه دونهء کاراکترها در یک رشته و بعد مقایسهء این رشته هم راه اصولی و مطمئنی نیست و در پی اچ پی مشکل امنیتی هم داره. پس با رنج یونیکد باید اینکار انجام بشه و الگوی یک رشتهء utf8.