منتخب بازارچه

راهنمای ساده برای تایپ فارسی در فرمها

ashoob

کاربر تازه وارد
چندین وقت پیش‌ها این تاپیک رو دیدم اما فرصت نکردم که خودم تستش کنم! امروز اومدم برای یک پروژه ازش استفاده کنم دیدم این که کار نمی‌کنه!!!!
به‌هر حال از دیروز تا حالا نشستم و با یکسری تحقیق و سروکله زدن باهاش تونستم مشکل رو برای FireFox حل کنم! من خودم روی FireFox 1.5 و Mozilla 1.6 و البته IE تست کردم، کار می‌کنه!
یک‌سری جینگول‌های(!!) اضافه که خودم می‌خواستم هم بهش اضافه کردم! که البته می‌شه حذفش کرد سلیقه‌ایه! مثل فاصله مجازی یا کنترل CapsLock موقع فارسی نویسی و... یک سری باگ دیگه هم داشت ورژن قبلی که سعی کردم رفع کنم. مشخص هست داشگه!!
من روی همون FARSI5 که بالا بود کار کردم نتیجه رو گذاشتم اینجا: FARSI6. البته من خودم این حالت دکمه‌ای(!) رو بیشتر دوست دارم! FARSI7
البته مواردی هست که هنوز باید روش کار بشه مخصوصا برای فرم‌هایی که چند input داره! الان زبای یکی که عوش بشه، زیان همه تغییر می‌کنه که نباید اینجوری باشه! کار زیادی نداره تا فردا اونم اصلاح می کنم!
 

mazoolagh

Registered User
تا اون آخرین تغییراتی که در کد اصلی داده بودم روی همه مرورگرها کار میکرد (البته نه یکسان) - احتمالا در کپی پیست کدها فاصله افتاده بوده که باعث شده کد درست کار نکنه.
 

ashoob

کاربر تازه وارد
به نقل از mazoolagh :
تا اون آخرین تغییراتی که در کد اصلی داده بودم روی همه مرورگرها کار میکرد (البته نه یکسان) - احتمالا در کپی پیست کدها فاصله افتاده بوده که باعث شده کد درست کار نکنه.


http://m.1asphost.com/mazoolagh/farsi/farsi5.htm
این فاصله‌ها که گفتی کجاشه؟!
نمی‌دونم شاید مغز من یک مشکلی داره! تا جایی که می‌بینم اینتو موقع تایپ فارسی هیچی تایپ نمی‌شه! البته نباید هم که بشه!! نمی‌خوام بحث تکنیکی بکنم! بقیه دوستان هم مقایسه کنن نتیجه رو بنویسن!
کدوم یکی درست کار می‌کنه؟ یا هردو درست کار می‌کنن یا اصلا هیچکدوم یا...؟!
http://m.1asphost.com/mazoolagh/farsi/farsi5.htm
یا
http://ashoob.net/files/farsi6.html


این البته کار می‌کنه (همه جا!) اما واقعا چیز ناقص و غیر قابل استفاده‌ای هست! دلیل هم روشنه! هرچی تایپ می‌کنی فقط آخر نوشته اضافه می‌شه!!!! سکریپت جدید این مشکل رو نداره اصلا! تو IE و FireFox مثل هم کار می‌کنه!
http://forum.persiantools.com/showpost.php?p=448792&postcount=115
 

mazoolagh

Registered User
عزیز جان
کدی که من گذاشتم مدتها نه تنها در این فروم بلکه جاهای دیگه هم عینا" استفاده میشده و میشه و چند جا هم دیدم که به اسم خودشون گذاشتن.

ایده اولیه اش هم فکر کنم مال nima178 بود و من فقط تغییراتی درش دادم که در opera و خانواده gecko هم کار کنه و یک دستی هم به سر و روی کدش کشیدم. حالا نمیدونم کدوم نادانی زده سایت من رو فیلتر کرده که دلیل کار نکردن کد نمیشه!

بهرحال هر کدی جای اصلاح و تغییر داره و زحمات شما هم قابل تقدیر و مهارت کدنویسی شما هم بر ما ثابت شده است.
 

ashoob

کاربر تازه وارد
من نمی‌فهمم! فایل FARSI5 اینجا گذاشتمش (http://ashoob.net/files/farsi5.htm) توی FireFox یا Mozilla برای شما کار می‌کنه؟!
من هرجا تست کردم موقع تایپ فارسی چیزی تایپ نمی‌شه (توی FireFox)! چیز خاصی هم نصب ندارم که بخواد کارو خراب کنه احتمالا!!

کد اولیه شما اگرچه توی FireFox کار می‌کرد اما یک مشکل اساسی داشت و اون اینکه فقط می‌شد به آخر متن چیزی اضافه کرد و اگر می‌خواستی وسط متن چیزی اضافه کنی یا اصلاحی صورت بدی، نمی‌شد! درست؟ نمی‌شه به کاربر گفت بیا اینجا فارسی تایپ کن اما بپا غلط تایپی نداشته باشی وگرنه مجبوری هرچی تایپ کردی رو تا رسیدن به غلط پاک کنی بعد دوباره تایپ کنی!
کد دوم هم که بالا لینک کردم اصلا کار نمی‌کنه! قبول؟! اینجا گذاشتمش http://ashoob.net/files/farsi5.htm اصلش هم اینجاس http://m.1asphost.com/mazoolagh/farsi/farsi5.htm

اگر حرف من درست باشه، این همه بحث برای چیه؟! سکریپت جدید در IE و FireFox یکسان کار می‌کنه! یعنی این درسته! یعنی همچین کدی قابل استفاده هست! نه کدهای قبلی! ایده‌ی خوبی بود که شروع شد اما بپذیر اگر قابل استفاده باشه! من هم جایی ندیدم از اون استفاده کنه! اگر هم FARSI5 داره مثل ساعت کار می‌کنه دیگه حرفی نیست (توی FireFox)! البته اگر ملاک کار کردن اینه که همه جا کار کنه که خوب پس کار نمی‌کنه چون من نمی‌تونم ازش استفاده کنم الان :D:D!!!!

در مورد مهارت برنامه‌نویسی هم بعد از اینکه مشخص شد FARSI5 (یا هرکدوم از سکریپت‌های معرفی شده‌ی دیگه) درست کار می‌کنن یا نه، با هم صحبت می‌کنیم :cool:!
 

mazoolagh

Registered User
باشه - هر چی شما میگی درسته!
اصلا افتخار نفر اولی که تونسته توی فایرفاکس و اپرا هم درستش کنه مال شما!

اینهمه آدمی که اینجا از این کد استفاده میکردن احتمالا دچار توهم بودن شما بعد 2 سال فهمیدی - حالا شما بیا از گمراهی درشون بیار.

شما هم اگر میخوای نشون بدی کدنویسی بلدی بهتره وقتت رو روی یک ایده جدید بگذاری.
 

ashoob

کاربر تازه وارد
چقدر باحاله اینجا!!! چقدر باحالن آدمای اینجا!!!
بابا جون یک کلمه! FARSI5 کار می‌کنه یا نه؟!
یک کلمه بگو آره کار می‌کنه من میرم گم می‌شم!
اگر هم نه که باز این بحث‌ها برای چیه؟! مثل اینکه بگم من فیل هوا می‌کنم اما هوا نمی‌ره!
یک آدرس بگو بشه تو فایرفاکس فارسی تایپ کرد!
روی ایده‌های جدید هم کار می‌کنم! نمونه‌هاش هست! روی ایده‌های دیگه هم که هنوز خیلی جای کار داره همینطور!

باز مهارت برنامه‌نویسی بمونه برای وقتی که صریحا یک نفر اینجا گفت که فایل FARSI5 درست کار می‌کنه یا نه! (یک کلمه: بله یا نه) یا حداقل زمانی که شما یکی از اون چندین آدرسی که می‌شه تو فایرفاکس توش فارسی تایپ کردی رو اینجا نوشتی!

لطفا بجای اینکه از روی تعصب و فقط با استفاده واژه‌ها بخواهی کسی رو به سخره بگیری یا تلاش کنی کوچک کنی، سعی کن با استدلال و منطق مجابش کنی یا از گمراهی بیرونش بیاری...!
با تشکر!
 

Ali_ix

Registered User
به نقل از ashoob :
چقدر باحاله اینجا!!! چقدر باحالن آدمای اینجا!!!
بابا جون یک کلمه! FARSI5 کار می‌کنه یا نه؟!
یک کلمه بگو آره کار می‌کنه من میرم گم می‌شم!
اگر هم نه که باز این بحث‌ها برای چیه؟! مثل اینکه بگم من فیل هوا می‌کنم اما هوا نمی‌ره!
یک آدرس بگو بشه تو فایرفاکس فارسی تایپ کرد!
روی ایده‌های جدید هم کار می‌کنم! نمونه‌هاش هست! روی ایده‌های دیگه هم که هنوز خیلی جای کار داره همینطور!

باز مهارت برنامه‌نویسی بمونه برای وقتی که صریحا یک نفر اینجا گفت که فایل FARSI5 درست کار می‌کنه یا نه! (یک کلمه: بله یا نه) یا حداقل زمانی که شما یکی از اون چندین آدرسی که می‌شه تو فایرفاکس توش فارسی تایپ کردی رو اینجا نوشتی!

لطفا بجای اینکه از روی تعصب و فقط با استفاده واژه‌ها بخواهی کسی رو به سخره بگیری یا تلاش کنی کوچک کنی، سعی کن با استدلال و منطق مجابش کنی یا از گمراهی بیرونش بیاری...!
با تشکر!
کاوه جان !
اون فایلی که مازولاق روش کار کردند توی فایرفاکس و اپرا کار میکرد ... منتها همونطور که گفتید مشکلات ظریفی هم داشت .. مثل همون مشکلی که نمیشد متنهای وسطی نوشته رو ویرایش کرد همش به انتهای نوشته میپرید.
ولی به هر حال پس از مدتها خماری !!! اولین اسکریپتی بود که غیر از IE جای دیگه ای هم کار میکرد !

حالا شما هم اومدی اصلااحات بیشتری انجام دادی و مشکلات قبلی هم برطرف کردی ... دستت درد نکنه ! آفرین.

فکر نکنم کسی چیزه دیگه ای گفته باشه و منظور مازولاق چیزی غیر از تایید باشه. شما شاید بد برداشت کردی.

به هر حال موفق باشید ;)
 

ashoob

کاربر تازه وارد
عزیز من! FARSI6 رو که می‎‌دونم کار می‌کنه! بدیهیه! چون مهارت توش به کار رفته و ورژن آخر هستش!!!!!!! همه‌ی بحث سر کار کردن FARSI5 هست که نمی‌کنه!
 

Ali_ix

Registered User
به نقل از ashoob :
عزیز من! FARSI6 رو که می‎‌دونم کار می‌کنه! بدیهیه! چون مهارت توش به کار رفته و ورژن آخر هستش!!!!!!! همه‌ی بحث سر کار کردن FARSI5 هست که نمی‌کنه!
میکنه آقا ! میکنه !!! :d
 

ashoob

کاربر تازه وارد
الان بیشتر از قبل مطمئن شدم که کار نمی کنه و مشکل از من نیست!!!
آقا من که گفتم غلط کردم اومدم اینجا خواستم تبادل اطلاعات کنم!
نگفتم؟!
حالا می گم...

ولی به خاطر هیچ و پوچ آدم انقدر تابلو چاخان نمی کنه به خدا!!!!!!!!!!!!!!!!
 

shahramg

Registered User
به نقل از ashoob :
عزیز من! FARSI6 رو که می‎‌دونم کار می‌کنه! بدیهیه! چون مهارت توش به کار رفته و ورژن آخر هستش!!!!!!! همه‌ی بحث سر کار کردن FARSI5 هست که نمی‌کنه!
http://ashoob.net/files/farsi5.htm مگه farsi5 این نیست؟! خوب اینم کار میکنه مثل ساعت. اون مشکلی که گفتی رو هم نداره! یعنی همیشه از آخر اضافه نمیکنه..البته اینا رو من تو IE چک کردما. یکم صبر کن تو اپرا و فایرفاکس هم چک کنم...
+++ تو فایرفکس هم همین الان چک کردم کار کرد..شاهد بیطرف میخواستین، من. دیگه خود دانید..

(حالا میدونم این بابا باز میاد میگه کار نمیکنه! مرغش یه پا داره دیگه!)
 

ashoob

کاربر تازه وارد
بی طرف جان! به نظر میاد فراموش کردی تیک مربوط به "کامپیوتر من امکان تایپ فارسی ندارد" توی فایل FARSI5 رو بزنی!!!!
درمورد چک کردن توی IE هم واقعا لطف بزرگی کردی!!!!!!!!!!!!!! مرسی!

من که گقتم غلط کردم! کافی نبود؟!
 

ashoob

کاربر تازه وارد
اسکریپت‌هایی که در حال حاضر برای اضافه کردن امکان تایپ فارسی در فرم‌های وب مورد استفاده قرار می‌گیرند، دارای ۲ مشکل هستند:

اول اینکه بخاطر استفاده از رویدادهای onkeypress یا onclick یا... و اینکه این رویداد/خصوصیت‌ها دیگر در استانداردهای وب جایی ندارند، نمی‌توان صفحاتی که امکان تایپ فارسی را در آنها قرار داده‌ایم، استاندارد کنیم.

مشکل دوم اینکه تنظیم این امکانات با توجه به کارهایی که باید انجام شود، می‌تواند گیج کننده باشد.

به همه‌ی اینها باید اضافه کرد این نکته را که اکثر اسکریپت‌هایی که در حال حاضر مورد استفاده قرار می‌گیرند، باگ‌های فراوانی دارند. مثلا به صفحه عضویت پرشین‌بلاگ - به عنوان یک سایت معتبر (احتمالا!) - نگاه کنید: فیلد "نام کاربر" را انگلیسی کنید سپس در فیلد "عنوان وبلاگ" چیزی تایپ کنید. می‌بینید که به‌جای فارسی، کاراکترهای انگلیسی تایپ می‌شوند! یعنی همه‌ی فیلدها همزمان یا انگلیسی هستند یا فارسی اما دکمه‌های تغییر زبان همزمان تغییر نمی‌کنند و ممکن است دکمه، تایپ در حالت فارسی را نشان دهد اما انگلیسی تایپ شود!!!!! (البته حل مشکل این اسکریپت بسیار ساده است اما متاسفانه ما آدم‌های بنداز و در رویی هستیم!)

برای اینکه کار را راحت‌تر کنیم، استاندارد بمانیم و باگ نداشته باشیم(!!!!)، اسکریپت تایپ فارسی را جور دیگری بازنویسی کردم!
این سکریپت در IE و خانواده‌ی Mozilla/FireFox بدرستی و کاملا یکسان کار می‌کند و هیچ تاثیری روی مرورگرهای opera ندارد! ضمن اینکه استفاده‌اش بسیار ساده است، به استاندارد بودن صفحات لطمه‌ای نمی‌زند، باگ هم ندارد(امیدوارم!!!).

استفاده از این اسکریپت فقط ۲ مرحله دارد:

۱. فایل farsitype.js را به صفحات مورد نظر الحاق کنید! (داخل تگ <head>)
کد:
<script language="javascript" src="farsitype.js" type="text/javascript"></script>
۲. به شناسه lang هرکدام از تگ‌های <input> یا <textarea> که می‌خواهید دارای امکان تایپ فارسی باشند، مقدار "fa" بدهید!
کد:
<input type="text" name="whatever" lang="fa" />
<textarea cols="30" rows="7" name="whatever" lang="fa"></textarea>
فقط lang=fa برای این اسکریپت دارای اهمیت است!

تموم شد! اسکریپت به طور خودکار دکمه‌ی تغییر زبان را ایجاد می‌کند، سایر کارهای مورد نیاز را نیز انجام می‌دهد!

می‌توانید برای فعال/غیرفعال کردن سکریپت از یک چک‌باکس هم استفاه کنید که اختیاری هست و وجودش ضروری نیست:
کد:
<input  type="checkbox" id="disableFarsiType" />
در این اسکریپت، علاوه بر دکمه تغییر زبان، می‌توانید از دکمه F8 حین تایپ برای تغییر زبان استفاده کنید. (دقت دارید که دکمه تغییر زبان همزمان تغییر می‌کند و با فیلدهای دیگر هم تداخلی ندارد!)

نمونه‌ی اسکریپت

لطفا نگاهی هم به سورس فایل farsitype.js بیندازید. سعی کردم آدرس هرجایی که ایده‌ای از اونها گرفتم رو بیارم. البته مطمئنا نام‌هایی از قلم افتاده. بویژه کسانی که ایده‌ی اولیه متعلق به اونها بوده! واقعا صاحب ایده‌ی اولیه کیه؟!
-------------------------------------------------------
می‌دونم بجز برخورد بد و منفی و سرد با چیزی دیگه‌ای مواجه نمی‌شم. اما گفتم شاید این کد به‌درد یک نفر به‌جز اونایی که اینجارو قلمرو عرض اندام خوشون می‌دونن بخوره!! همچین چیزی باید تقریبا ۲ سال پیش نوشته می‌شد! من این‌روزها احتیاج به همچین کدی پیدا کردم برای همین الان نوشتم!
 

ashoob

کاربر تازه وارد
امکان تایپ فارسی در Opera هم به FarsiType اضافه شد.
تست کنید

فقط مشکل تابع focus در Opera وجود داره که فعلا راه حلی براش پیدا نکردم.

البته کد این ورژن رو خودم زیاد نمی‌پسندم و دنبال بهتر کردنش هستم...
کم کم باید دنبال پشتیبانی در مرورگرهای دیگه باشیم. نمی‌دونم چه مرورگرهایی با چه خصوصیاتی...!
 

bakhanbeigi

کاربر تازه وارد
من از این کد در پروژم که با استفاده از آژاکس (prototype) تکست باکس رو لود می کرد استفاده کردم اما جواب نداد چی کار کنم /؟
 

drritalin

Registered User
سلام آشوب عزیز.
از این اسکریپت جنابعالی بسیار لذت بردم.عالی بود.
دست شما درد نکنه.
فقط یه سوال کوچیک:
چطور می تونم آیکون تغییر زبان رو حذف کنم؟ یعنی فقط با F8 بشه زبان رو عوض کرد؟
مرسی
 

sarve

کاربر تازه وارد
امکان تایپ فارسی در Opera هم به FarsiType اضافه شد.
تست کنید

فقط مشکل تابع focus در Opera وجود داره که فعلا راه حلی براش پیدا نکردم.

البته کد این ورژن رو خودم زیاد نمی‌پسندم و دنبال بهتر کردنش هستم...
کم کم باید دنبال پشتیبانی در مرورگرهای دیگه باشیم. نمی‌دونم چه مرورگرهایی با چه خصوصیاتی...!

واقعا عالی بود من از این کد تو برنامه ام استفاده کردم فقط تو chroome جواب نمی داد ولی تو بقیه براوزرا خیلی خوب جواب داد
 
بالا