برای انتخاب تاریخ (DatePicker) توسط JavaScript توابع زیادی نوشته شده و یکی از جالبترین آنها پلاگینی است که در jQueryUI وجود دارد. این پلاگین امکان شخصی شدن زیادی دارد ولی متاسفانه امکان استفاده از تقویم شمسی در آن وجود ندارد.
در اینجا نسخه اصلاح شده این تقویم را که پشتیبانی از تاریخ هجری شمسی را به آن اضافه کرده ام، به همراه نحوه استفاده و چند مثال ارایه نموده ام. ضمنا کلیه فایلهای مورد استفاده در اینجا به صورت یک فایل فشرده قابل دریافت است. در این نسخه امکان اضافه کردن تقویم های دیگر نیز به سادگی وجود دارد. به عنوان مثالی از چگونگی اضافه کردن تقویم جدید، تقویم هجری قمری را نیز پیاده سازی کرده ام و در مثال ضمیمه قابل مشاده است.
توضیح کد:
با توجه به نیازی که به این تقویم داشتم، تغییرات بسیار مختصری در پلاگین اصلی دادم و در نتیجه آن، امکان تغییر تقویم مورد استفاده در آن را نیز اضافه نمودم. این نسخه اصلاح شده، تحت نام ui.datepicker-cc.js موجود است (پسوند cc به معنی Custom Calendar است).
در ادامه برای اضافه کردن تقویم شمسی، یک کلاس جدید به اسم JalaliDate ایجاد کردم که مشابه کلاس Date در جاوااسکریپ عمل می کند. البته این کلاس شامل تمامی متدهای کلاس Date نمیشود و تنها متدهایی که در اینجا نیاز بود، پیاده سازی شد. این کلاس در حقیقت یک پوسته برای توابع تقویم جلالی پروژه فارسی وب است. این کلاس با استفاده از توابع موجود در اینجا پیاده سازی شده است. پیاده سازی سایر تقویم ها نیز با استفاده از توابع موجود در این سایت به سادگی امکان پذیر است. در نهایت فایل به نام ui.datepicker-cc-fa.js ایجاد کردم که کلیه تنظیمات لازم برای شمسی شدن تقویم و فارسی شدن این پلاگین را دارد. کلیه فایلهای ذکر شده را می توانید از ضمیمه این مقاله دریافت کنید.
روش استفاده:
استفاده از این پلاگین همانند تمام پلاگینهای دیگر jQuery است. برای این کار باید فایلهای css مربوط به theme مورد علاقه خود را به فایل html اضافه کنید.
سپس بعد از اضافه کردن اسکریپتهای jquery.js و ui.core.js (که در تمام پلاگینهای jQuery انجام میشود)، فایلهای ارایه شده در اینجا (ui.datepicker-cc.min.js و calendar.min.js و ui.datepicker-cc-fa.js) را اضافه کنید.
به عنوان مثال در بخش head فایل html خود، قسمتی مشابه کد زیر خواهید داشت:
<link type="text/css" href="ui.core.css" rel="stylesheet" /> <link type="text/css" href="ui.theme.css" rel="stylesheet" /> <link type="text/css" href="ui.datepicker.css" rel="stylesheet" /> <script type="text/javascript" src="jquery-1.3.2.min.js"></script> <script type="text/javascript" src="ui.core.min.js"></script> <script type="text/javascript" src="ui.datepicker-cc.min.js"></script> <script type="text/javascript" src="calendar.min.js"></script> <script type="text/javascript" src="ui.datepicker-cc-fa.js"></script>مثال
$('#datepicker1').datepicker();
$("#datepicker2").datepicker({
altField: '#alternate2',
altFormat: 'DD، d MM yy'
});
$('#datepicker3').datepicker({
showButtonPanel: true
});
$("#datepicker4").datepicker({
dateFormat: 'dd/mm/yy'
});
$("#format4").change(function() {
$('#datepicker4').datepicker('option', {dateFormat: $(this).val()});
});
$('#datepicker5').datepicker({
changeMonth: true,
changeYear: true
});
$("#datepicker6").datepicker({
showOn: 'button',
buttonImage: 'calendar.gif',
buttonImageOnly: true
});
$('#datepicker7').datepicker();
$('#datepicker8').datepicker({
numberOfMonths: 3,
showButtonPanel: true
});
بروزرسانی: نسخه جدید که شامل رفع چند باگ کوچک در اینترنت اکسپلورر است، ضمیمه شد.
بروزرسانی 2: نسخه سوم (رفع باگهای مربوط به حداقل و حداکثر تاریخ که در اینجا و اینجا گزارش شده بود) ضمیمه شد. ضمنا در این ضمیمه، مثالهای استفاده از حداقل و حداکثر تاریخ نیز اضافه شده است.
بروزرسانی 3: نسخه چهارم ضمیمه شد. در این نسخه یک باگ کوچک دیگر در ارتباط با تنظیم حداقل و حداکثر تاریخ برطرف شد. در این ضمیمه، مثال استفاده از حداقل به صورت پویا اضافه شده است.
بروزرسانی 4: نسخه پنجم ضمیمه شد. در این نسخه امکان استفاده همزمان از تقویم شمسی و میلادی یک صفحه فراهم شده است. نمونه ای از روش استفاده در مثال ضمیمه وجود دارد. همچنین نسخه فشرده شده اسکریپت (برای کاهش حجم صفحات) نیز ضمیمه شده است و در مثال از آن استفاده شده است.
بروزرسانی 5: کنترل سفارشی انتخاب تاریخ برای ASP.NET ایجاد شده و در اینجا قابل مشاهده است.
بروزرسانی 6: تغییرات مختصری در اسکریپتها داده شد و تقویم شمسی استفاده شده عوض شد. با اعمال این تغییرات، تعریف تقویم جدید ساده تر شده است. همچنین امکان استفاده از تاریخ هجری قمری نیز به همراه مثالی برای استفاده از آن اضافه شد.
بروزرسانی 7: مشکلات نسخه آخر تقویم در IE و همینطور مشکل موجود در هنگام استفاده از setDate برطرف شد.
بروزرسانی 8: در نسخه جدید از jquery ui نسخه 1.8 به همراه jquery نسخه 1.4.2 استفاده شده است.
بروزرسانی 9: نسخه جدید آپلود شد. در این نسخه از jQuery UI نسخه 1.8.14 و jQuery نسخه 1.6.2 استفاده شده است. در این نسخه، تغییراتی که در کد اصلی داده شده است، با کامنت (به صورت [CC]) مشخص شده است.
| ضمیمه | اندازه |
|---|---|
| نسخه کوچک شده به همراه مثال | 81.27 کیلو بایت |
| نسخه اصلی به همراه مثال (برای مشاهده کدهای تغییر یافته) | 104.64 کیلو بایت |
نظرات
یک مشکل عجیب
با سلام و احترام و قدردانی از زحمات شما
من از این تقویم در یک پروژه asp.net استفاده کردم و در حالت عادی همه چیز درسته اما به محض این که یک PostBack رخ می ده دیگه تقویم شما باز نمی شه که نمی شه که نمی شه.
خیلس هم باهاش ور رفتم تا درست بشه اما نشد.
می خواستم ببینم که می تونید بهم کمک کنید.
با یک دنیا سپاس
mail.hamid.hoseini@gmail.com
تغییر تم Date Picker
با سلام
ببخشید من از کنترل های Telerik استفاده می کنم
همان طور که به احتمالا می دانید این مجموعه دارای حدودا بیش از 16 تم پیش فرض هست
که ما می توانیم از تم های پیش فرض این کنترل ها برای یک کنترل خاص و یا کل صفحه استفاده کنیم و یا اینکه از تم های ساخته شده خودمان استفاده کنیم
همچنین این مجموعه شامل یک کنترل به نام FormDecorator هست که استایل کل صفحه وبمان شامل تغییر استایل کنترل های HTML و ASP.NET موجود در صفحه مان می باشد.
حال سوالم این است که چگونه می توانم از کنترل FormDecorator برای تغییر استایل این کنترل استفاده کنم؟
و یا اینکه آیا می توانید Property ای به نام Theme برای این کنترل طراحی کنید که با تنظیم تم از تم های پیش فرض Telerik استفاه کنم؟
به طور کلی سوالم در مورد تغییر تم با استفاده از خصوصیت Theme که مربوط به کنترل های Telerik
و یا استفاده از FormDecorator برای تغییر استایل کنترل های HTML و یا ASP.NET می باشد؟؟
به نظرم اگر تگ های این کنترل را بتوانید طوری تغییر دهید که این کنترل به صورت HTML در نظر گرفته شود و کنترل FomDecorator بتواند آن را تغییر استایل دهد بسیار خوب هست.
اگر ممکن هست پاسخ سوالم را ارسال فرمایید
با تشکر
تشکر !
داداش کارت خیلی درسته !
تاریخ پیش فرض
سلام و خسته نباشید
تاریخ پیش فرض درست کار نمی کنه مثلا
defaultDate: new JalaliDate(1390, 10, 27)
ای دستور موقع نمایش بهمن ماه رو پیش فرض انتخاب می کند
ممنوم میشوم که راهنمایی کنید
re
You don't have to take all the stress of research papers finishing because professional custom papers writing firms can rid of your problems suggesting you to buy essay papers and that is perfect, I argue!
سعید
سلام مهندس
کارت عالی بود . خسته نباشی .
قدردانی ویژه
با سلام و احترام
امشب که با سایت شما آشنا شدم و دیدم در نهایت سخاوت چنین اطلاعات جالب و پر کاربردی رو در سایت خودتون قراردادین درنگ نکردم تا از شما قدر دانی ویژه کنم و انیدوارم همیشه موفق و پایدار باشید.
تشکر ویژه
بسیار ممنون از لطف شما انشاالله همیشه سلامت و پایدار باشی
سپاس گزاری
با درود و تقدیم احترام؛
در کشور عزیزمان متخصصانی چون شما که دانش و تجربه ی خویش را بی مزد در اختیار دیگر هم نوعانشان قرار می دهند اندکند. به همین دلیل سپاسی ویژه از شما دارم.
ضمنا ماژول بسیار کاربردی است و من با اجازه ی شما در یک پروژه ی تجاری از آن استفاده کردم و از این بابت نیز تشکر فروان از شما می شود.
شاد و سربلند باشید
از زحمات شما بابت این کار
از زحمات شما بابت این کار بسیار بزرگ متشکرم.
پیروز و سربلند باشید
چگونه تداخل این دو پلاگین jQuery رو برطرف کنم
با سلام
استاد من از این کنترل و یک پلاگین autocomplete استفاده می کنم ولی هنگام استفاده کلاً این کنترل از کار می افته
ممنون میشم کمکم کنید
مثال رو تو سایت برنامه نویس گذاشتم
http://barnamenevis.org/showthread.php?317601-%DA%86%DA%AF%D9%88%D9%86%D...
مرسی
تشکر
سلام
اقا کارت خیلی درسته
ممنون از زحمتی که کشیدی
تبدیل به تاریخ شمسی پلاگین fullcalendar
سلام بر شما.
چطوری میشه با استفاده از این فایل جاوا اسکریپت که برای تبدیل تاریخ میلادی به شمسی ازش استفاده کردین تاریخ میلادی پلاگین fullcalendar رو به تاریخ شمسی تبدیل کرد.
با تشکر.
تشکر
سلام
می خواستم قبل از استفاده از این کنترل از شما بابت زحماتی که برای طراحی این کنترل کشیدید تشکر کنم امید که همه ما ایرانیها در راه افزایش معلومات همدیگر گام برداریم و با به اشتراک گذاری تجربیات خود از میوه آن که جلوگیری از دوباره کاری و پیشرفت سریع در دانش است بهره مند شویم.
datepicker
سلام
از کار بسیار با ارزشتون تشکر می کنم . یک مشکل دارم که فکر می کنم مربوط به نام به کار برده شده 'datepicker ' برای فراخوانی باشد . نرم افزاری که من استفاده می کنیم (APEX) خودش یک datepicker داره و به نظر میاد موقع فراخوانی همون رو میخونه . برای رفع مشکل چه پیشنهادی دارید ؟
با تشکر
datepicker
سلام،
ممنون از نظرتون.
احتمالا اونجا هم datepicker خود jQuery استفاده شده که به این مشکل خوردین. اگر میتونید، لینک یک صفحه که این کنترل در اونجا استفاده شده و مشکل داره رو برای من بفرستید.
تشکر
عالی بود واقعاً دستتون درد نکنه
مهندس سلام
بسیار بسیار ممنون از زحمتی که کشیدید. به شخصه خیلی به من کمک کرد ویک سوال داشتم.
در قسمت "استفاده از dropdown" چطور می تونم تمام سالهارو در یک اسکرول نشون بدم؟
جسارتا از روی تجربه ی شخصیم عرض می کنم که 90% کاربران من متوجه نمیشن که سال با محدوده 20سال نمایش داده میشه و چون من برای ورود تاریخ تولد استفاده می کنم مشکل ساز شده.
میشه لطفا راهنمایی بفرمایید؟
بسیار سپاسگذارم.
yearRange
سلام،
ممنون از نظرتون.
فکر میکنم شما با تنظیم yearRange به هدفتون برسید. اینجا رو ببینید: http://docs.jquery.com/UI/Datepicker#option-yearRange
نمایش تقویم فارسی
سلام. مرسی از کار خوبتون.
یک سوال داشتم، من می خوام calendar رو به صورت فارسی نشون بدم، کاربر من تاریخ فارسی انتخاب کنه، اما وقتی روی روز دلخواه کلیک می کنه داخل textbox تاریخ معادل انگلیسی نمایش داده بشه
مرسی
نمایش تقویم فارسی
سلام،
ممنون از نظرتون.
میتونید از altField استفاده کنید. نمونه استفاده اش هم در مثال هست.
پاس دادن تاریخ معادل به صورت اتوماتیک
سلام
خیلی خیلی ممنون از کار بسیار ارزشمند شما.
پیرو سوال قبلی : چطور تقویم شمسی باشه و مقدار شمسی اون نمایش داده شود ولی معادل میلادی اون همزما ندر یک فیلد مخفی پر شود ، یا چطور معادل میلادی رو به تابع دلخواه پاس بدهیم؟ روش زیر جواب نمی دهد؟
$("#datepicker").datepicker({ dateFormat: "DD, d MM, yy",
altField: '#datepickeren',
altFormat: 'd MM, yy',
changeMonth: true,
changeYear: true,
onSelect: function (dateText, inst) { fillList(dateText, 0, 0); }
});
با تشکر
پاس دادن تاریخ معادل به صورت اتوماتیک
سلام،
خیلی ممنون از لطفتون.
برای اینکار در کلاس JalaliDate یک متد به نام getGregorianDate نوشتم که تاریخ میلادی معادل رو میده. مثلا اینطوری میشه نوشت:
خروجی
لطفامیشه بگید این کدی که نوشتید اگر من بخوام خروجیشو تو یک متغیر بریزم باید چیکار کنم.ممنون
مثال برای تاریخ پویا
آقا هاشمی نژاد حرف شما درست که مثال هست و باید به تاریخ روز عدد یک را جمع کنیم . اما من هرکچا عدد یک را گذاشتم برنامه یه عکسالعمل نشان داد به جز همان چیزی که من بخوام . اگر امکانش هست یک مثال کد بگذارید .
مثال برای تاریخ پویا
اینجوری بنویسید:
تنظیم حداقل به صورت پویا
من یک سوال داشتم و آن اینه که وقتی تقویم را تنظیم حداقل به صورت پویا انجام می دم می خواهم اجازه نده به کاربر که همان روز را انتخاب کنه و حداقل یک روز بعد را انتخاب کنه مثلا اگر کاربر 8 دی را در تکس باکس اول انتخاب می کنه در تکس باکس دوم اجازه انتخاب8 دی نباشه ، به کاربر اجازه روز 9 دی به بعد بدهد . باید چه تغییر در کد انجام دهم ؟
تنظیم حداقل به صورت پویا
مثال برای تنظیم حداقل بصورت پویا در نمونه آپلود شده هست. فقط در مورد شرایط شما، باید روز رو با 1 جمع کنید.
دستتون درد نکنه
دستتون درد نکنه و خسته نباشید. خیلی خوب کار میکنه. فقط اگر بتونین ساعت رو هم اضافه بکنین دیگه عالی میشه.
تشکر فراوان
بسیار ممنون برای کار عالی که انجام دادید
موفق باشید
نیما
اضافه کردن امکانات جدید
خیلی ممنون و خسته نباشید از تقویم سایتتون . اگر این امکان را به تقویم خود اضافه کنید که کاربر نتواند تاریخ گذشته را انتخاب کند خیلی خوب می شود . مانند سایت
www.booking.com
با تشکر
تشکر
آقا بسیار بسیار مفید بود. عرض تشکر فراوان
تشکر
واقعا عالیه خیلی ممنون
توی نسخه 8.14 دکمه امروز با کلیک ماوس کار نمی کنه اما با اینتر عمل میکنه.
دکمه امروز
سلام،
ممنون از نظرتون.
شما با چه مرورگری امتحان کردین؟ من الان با فایرفاکس و IE تست کردم و ظاهرا که مشکلی نداشت
تشکر و راهنمایی
سلام استاد عزیز
با عرض معذرت که مزاحم وقت گران بها تون میشوم
من چند وقتی هست که دارم سعی میکنم با jqgrid
(http://www.trirand.net/download.aspx)
کار کنم ولی متاسفانه در قسمتdatepicker آن دچار مشکل شدهام
تقویم شما به تنهایی درست کار میکند ولی وقتی که سعی میکنم با jqgrid
استفاده کنم دچار مشکل میشم تنها مشکل این است که سال به صورت میلادی باقی میماند ولی روز و هفته بصورت فارسی است.
در این آدرس نمونهی کار با jqgrid موجود است که datepicker آن به صورت انگلیسی است
http://www.trirand.net/demophp.aspx
و مهم در اضافه شدن فایل های js آن است
js/jquery.js
js/i18n/grid.locale-en.js
js/jquery.jqGrid.min.js
js/jquery-ui-custom.min.js
که تنها در فایل jquery-ui-custom.min.js در خط ۴۶۸ jQuery UI Datepicker 1.8.13
date picker آورده شده است
پیشاپیش از رهنودهای شما ممنونم
مشکل با jquery-ui-1.8.14
سلام دوست عزیز
css کد شما با آخرین ورِژن JQuery یک مشکل داشت که بد ندیدم برای شما هم ارسال کنم در فایل jquery-ui-1.8.14.custom.css
کد
.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
با کد
.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
مشکل دارد و با جاگزین کردن اولی با دومی مشکل حل می شود. rect مشکل ساز می باشد.
تشکر
با سلام و عرض خسته نباشید
دوست عزیز کارت خیلی حرفهای بود تشکر میکنم
و همین طور از استاد عزیز آقای هاشمی نژاد
ممنون
مشکل با jquery-ui-1.8.14
خیلی خیلی ممنون. این توضیح شما به دوستانی که مشکل مشابه دارند هم کمک خواهد کرد.
این مشکل رو دیده بودم ولی فرصت تصحیح کد سایت رو نداشتم. البته من یه جورایی صورت مساله رو پاک کرده بوده و به ui-helper-hidden-accessible هم display:none داده بودم که کار شما خیلی قشنگتر بود.
انشالله هر وقت فرصت کردم نسخه جدید تقویم رو درست کنم، این تغییر رو در css ها اعمال خواهم کرد.
تشکر
من از کد شما استفاده کردم. خواستم بدین شکل از شما تشکر کنم.
م.ن.
ممنون
دستت درد نکنه!
فریم ورک من از jquery ui استفاده می کنه. برای پروژه های فارسی نا امیدانه در حال برسسی date picker متفرقه بودم که به صفحه شما برخوردم و مشکلم حل شد.
قرض از مزاحمت یک پیشنهاد کوچک بود:
اگر در فایلی که اصلاح کردید کدتان را از کد jquery ui با کامنت تمیز دهید...
www.mxtorabi.com
تشخیص کدهای تغییر کرده
سلام،
اول اینکه ممنون از نظر و پیشنهادتون.
چند وقتی هست که میخوام نسخه جدید رو فارسی کنم که حتما در انجام این کار توصیه شما رو عملی خواهم کرد. خیلی پیشنهاد خوب و بجایی بود.
سلام
با تشکر و دستت درد نکنه
من همهی این کاررارو انجام دادم ولی سال همچنان میلادی مونده
روزها فارسی شده
لطفا راهنمایی کنید
سلام
اگر میتونید یک نمونه برام ارسال کنید تا بررسی کنم. اگر هم روی اینترنت سایت رو آپلود کردین، فقط لینک صفحه مورد نظر رو بدین.
سلام
با سلام و خسته نباشید
من به gmail hasheminezhad@gmail.com شما فایل رو فرستادم لطفا کمک کنید این موضوع خیلی مهم است
من در بروژه ای که دارم می نویسم بایستی قبلش این فایل jquery-ui-custom.min.js رو فراخوانی کنم که توش همون پلاگینهای jquery هست از جمله date picker
من هر کاری کردم متاسفانه نشد تنها روزها و ماهها فارسی شد ولی سال همچنان میلادی موند
حتی کدهای این فایل رو با کدهای شما جایگزین کردم ولی بازم نشد لطفا به این فایل نگاه کنید
که بفرمایید بایستی چه کاری کنم ؟
ممنون از زحمات شما jalalimehdi@gmail.com
تقویم جلالی در دروپال
با سلام و عرض خسته نباشید خدمت شما
سایتی که من استفاده میکنم از دروپال 6.22 هست و از ماژول jquery هم استفاده میکنم و تا قبل از آشنایی با کار ارزشمند شما
تمامی تاریخ های سایت از datepicker بصورت میلادی وارد میشد.
حالا من برای استفاده از پلاگین خوب شما دقیقا چه کارایی رو بایستی انجام بدم . چون که قبلا چون خود jquery این پلاگین رو می شناخت و لزومی به ADD کردن نداشت آیا فایلهای شما رو در شاخهي
sites\all\libraries\jquery.ui\ui کپی کنم کافی هست یا اینکه drupal_add_js بایستی اضافه کنم
لطفا راهنمایی کنید
با تشکر از زحمات شما
فرستادن تغییرات به jquery-ui
سلام
اگه ممکنه تغییراتی که باعث افزودن قابلیت custom calendar به jquery-ui شده رو براشون بفرستید تا توی نسخه های بعدی اضافه کنن.
با تشکر از کار ارزشمند شما
سلام واقعا دستت درد نکنه. فوق
سلام
واقعا دستت درد نکنه.
فوق العاده بود. فقط اگه فایل JS همش تو یک فایل باشه مدیریتش راحتتره
مهدی جون واقعا دست شما درد
مهدی جون واقعا دست شما درد نکنه خسته نباشید
سلام ممنون مهندس
سلام
جدا علی بود
ممنونم
من هم در زمینه کاری شما کار می کنم
این هم سایتم لطفا نظر بدین
www.hamegir.com
راستس جسارتا اگه از ckeditor برای نظر دهی تو سایتتان استفاده کنید بهتر !
پیدا کردن لینک نظر دادن هم کمی سخت
این لینک را هم ببینید
http://www.themeflash.com/30-stunning-jquery-slider-plugins-and-tutorial...
سوال مهم
ممنون بابت ارائه دادن این تقویم.
اما ما در برنامه ها فقط واسه نمایش از این تقوم استفاده میکنیم و تمامی محاسبات و ذخیره در دیتابیس به شکل تاریخ میلادی می باشد حالا چطوری مشه اینو سمت سرور(C#) و یا کلاینت به میلادی برگردوند؟؟؟؟