تقویم فارسی جاوااسکریپت

وارد کردن تاریخ شمسی در نرم‌افزارهای تحت وب( Web Application ) به گونه‌ای که سازگاری با مرورگرهای مختلف و بیشترین کارایی فراهم شود یکی از دغدغه‌های مهم برنامه‌نویسان وب است.

تقویم فارسی جاوااسکریپت امیب

کاربران قدیمی: این نسخه( ۰.۲.۱ ) تغییرات مهمی داشته است که لازم است پیش از به‌روزرسانی آن‌ها را در اسکریپت‌های خود اعمال کنید

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

سه ویژگی مهم در تقویم ایجاد شده عبارتند از:

  • دقیق‌ترین الگوریتم محاسبه‌ی تاریخ با پشتیبانی از سال‌های خورشیدی تا سال ۹۹۹۹
  • شناسایی هوشمند بیش از ۱۸ مدل ورود دستی تاریخ توسط کاربر
  • تغییر ظاهر تقویم تنها با امکانات CSS

مهم‌ترین ویژگی این تقویم امکان ورود تاریخ به صورت دستی توسط کاربر است:
فرمت‌های قابل قبول برای ورود تاریخ عبارتند از:

  • ۹۰۰۸۱۴
  • ۱۴۰۸۹۰
  • ۱۳۹۰۰۸۱۴
  • ۱۴/۸/۹۰
  • ۹۰/۸/۱۴
  • ۱۴/۸/۱۳۹۰
  • ۱۳۹۰/۸/۱۴
  • ۱۴-۸-۹۰
  • ۹۰-۸-۱۴
  • ۱۴-۸-۱۳۹۰
  • ۱۳۹۰-۸-۱۴

و فرمت‌های ویژه:

  • ۰۸۱۴
  • ۱۴۰۸
  • ۱۴-۸
  • ۸-۱۴
  • ۱۴/۸
  • ۸/۱۴
  • ۱۴

در فرمت‌های ویژه که سال و ماه وارد نشده‌اند، سال و ماه فعلی به حساب خواهد آمد.
در فرمت‌هایی که سال مشخص نشده باشد، دو رقم ابتدایی در صورت امکان روز محاسبه خواهند شد

روش به‌کارگیری تقویم در صفحات وب


استفاده از این تقویم بسیار ساده است
ابتدا فیلد متنی خود را در متن صفحه قرار دهید:

<input type="text" id="pcal1" class="pdate">

سپس فایل جاوااسکریپت و قالب‌بندی CSS را در سرآمد فایل HTML قرار دهید:

<link rel="stylesheet" href="js-persian-cal.css">
<script src="js-persian-cal.min.js"></script>

دستور تبدیل فیلد متنی به فیلد تاریخ را در انتهای صفحه و در تگ اسکریپت قرار دهید:

<script>
	var objCal1 = new AMIB.persianCalendar( 'pcal1' );
</script>

پارامتر تعریف شده شناسه‌ی( id ) فیلد متنی است که به فیلد تاریخ تبدیل خواهد شد.

پارامتر دوم به تنظیمات اضافی اختصاص دارد و اختیاری است
پارامتر دوم شیءی درون‌خطی با فرمت JSON است. برای نمونه به مثال زیر توجه کنید:

<input type="text" id="pcal1" class="pdate">
<input type="hidden" name="extra" id="extra">
 
<script>
	var objCal1 = new AMIB.persianCalendar( 'pcal1',
		{ extraInputID: "extra", extraInputFormat: "YYYYMMDD" }
	);
</script>

دستور بالا سبب می‌شود فیلد اضافی با شناسه‌ی extra تاریخ را با فرمتی دیگر ذخیره کند
این قابلیت به برنامه‌نویسان در ارزیابی و تبدیل تاریخ یاری می‌رساند

گزینه‌های قابل تغییر – اختیاری


  • extraInputID : شناسه‌ی فیلد اضافی
  • extraInputFormat : فرمت فیلد اضافی
  • onchange: تابعی که هنگام تغییر تاریخ به صورت خودکار فراخوانی می‌شود( به مثال‌ها مراجعه کنید )
  • initialDate: تاریخ پیش‌فرض که هنگام ایجاد فیلد در آن قرار می‌گیرد.
  • defaultDate: چنانچه مقدار فیلد تاریخ معتبری نباشد و کاربر تقویم را باز کند، این تاریخ به او نشان داده می‌شود.
  • divPickerClassName : نام کلاس div اصلی حاوی تقویم برای قالب‌بندی
  • btnClassName : نام کلاس a دکمه‌ی تقویم برای قالب‌بندی

فرمت‌های قابل قبول برای فیلد اضافی عبارتند از:

  • YYYY سال میلادی – چهار یا پنج رقمی
  • MM ماه میلادی – دو رقمی
  • DD روز میلادی – دو رقمی
  • YY سال میلادی – دو رقمی
  • M ماه میلادی – یک یا دو رقمی
  • D روز میلادی – یک یا دو رقمی
  • yyyy سال خورشیدی – چهار رقمی
  • mm ماه خورشیدی – دو رقمی
  • dd روز خورشیدی – دو رقمی
  • yy سال خورشیدی – دو رقمی
  • m ماه خورشیدی – یک یا دو رقمی
  • d روز خورشیدی – یک یا دو رقمی
  • JD روز جولین( تعداد روزهای گذشته از یکم ژانویه سال ۴۷۱۳ پیش از میلاد مسیح(ع) )

فهرست قابلیت‌های تقویم شمسی جاوااسکریپت


  • تغییر ماه و سال با کلیک بر روی دکمه‌های قبل و بعد
  • تغییر ماه و سال با امکان انتخاب از فهرست
  • افزایش و کاهش تاریخ با استفاده از کلیدهای بالا و پایین در فیلد
  • امکان فعال و غیرفعال کردن تقویم به صورت موقت
  • تغییر تاریخ به تاریخ فعلی با کلیک بر روی لینک مخصوص
  • ارزیابی ورودی کاربر و تشخیص تاریخ با ۱۸ فرمت مختلف
  • تغییر قالب DatePicker تنها با تغییر در فایل CSS
  • تشخیص اعداد فارسی و لاتین
  • امکان تبدیل آنلاین تاریخ به فرمت‌های مختلف و ذخیره در فیلد اضافی
  • پشتیبانی از مرورگرهای مختلف
  • مصرف کم حافظه، سرعت و دقت بسیار بالا
  • حجم کم سرآمد( تنها ۱۴ کیلوبایت )
  • استفاده‌ی بسیار آسان

آزمون به صورت آنلاین


پوسته‌ی اصلی
پوسته‌ی تیره
پوسته‌ی فیروزه‌ای فسفری
پوسته‌ی هلویی

دریافت تقویم فارسی جاوااسکریپت – ویرایش ۰.۲.۱ – ۱۰ فروردین ۱۳۹۲


دانلود تقویم فارسی جاوااسکریپت

CDN


دسترسی به فایل اسکریپت از طریق CDN رایگان jsDelivr مقدور است. توجه کنید که این میزبان تضمینی برای پایداری ارائه نمی‌کند و استفاده از آن در پروژه‌هایی با اهمیت بالا توصیه نمی‌شود.

<script src="//cdn.jsdelivr.net/jspersiancal/0.2.1/js-persian-cal.min.js"></script>

jQuery


دوستان گرامی «حمید» و در تکمیل «صابر فتح‌اللهی» در کامنت‌ها روشی آسان برای تبدیل فیلدها به تقویم با کمک jQuery معرفی کردند:
۱- در انتهای فایل اصلی اسکریپت کد زیر را اضافه کنید

( function( $ ) {
	$.fn.persianCalendar = function(extra) {
		return this.each( function( index, element ) {
			var id = jQuery(element).attr("id");
			new AMIB.persianCalendar( id, extra );
		} );
	};
})( jQuery );

۲- با این قطعه کد می‌توان تمامی id‌هایی که مثلا با pcal شروع می‌شوند را تبدیل به فیلد تاریخ کرد:

jQuery("input[id^=pcal]").persianCalendar( {
	initialDate: '1392-10-20',
	defaultDate: '1392-10-20'
} );

۲۰۵ دیدگاه برای تقویم فارسی جاوااسکریپت

  1. غفوری می‌گوید:

    سلام
    این تقویم لایسنس خاصی داره اجازه این هست که از ان در نرم افزارهای تجاری سورس بسته استفاده بشه
    چون الان یک تقویم جاوا اسکریپتی دیگه هست تحت gpl3 است و نمی توان در پروژه های غیر متن باز از ان استفاده کرد

  2. جواد می‌گوید:

    با سپاس از تقویم زیبایتان
    من از ذخیره تاریخ از رشته ۱۰ تایی استفاده می کنم ولی اجازه ذخیره صفر را نمی دهد مثلا ۱۳۹۰/۰۱/۰۱ را به صورت ۱۳۹۰/۱/۱ ذخیره می کند لطفا بررسی کنید ممنون

    • امیرمسعود ایرانی می‌گوید:

      کامنت جدید:

      یکی از کاربران تقویم روشی جالب برای انجام این کار را استفاده کرده بودند
      ایشان شناسه‌ی فیلد اصلی را به عنوان فیلد کمکی هم وارد کرده بودند
      با این روش می‌توانید تاریخ را به هر فرمت دلخواه در فیلد اصلی نشان دهید که از آن جمله نمایش صفر قبل از ماه‌ها و روزهای یک رقمی است
      البته باید دقت کنید فرمت مورد نظر طوری باشد که برای تقویم قابل شناسایی باشد و مسئولیت این موضوع بر عهده‌ی برنامه‌نویس است

  3. غفوری می‌گوید:

    سلام امکان این هست که به این کنترل قابلیت گرفتن زمان شامل ساعت و دقیقه و ثانیه را هم بهش اضافه کرد

    • امیرمسعود ایرانی می‌گوید:

      به این موضوع قبلا فکر کرده بودم
      پیاده‌سازی این کار طوری که رابط کاربری آسیب نبینه کار سختی است( با توجه به اینکه امکان تایپ وجود دارد و بعد از تایپ کاربر علاوه بر تاریخ، ساعت هم باید تشخیص داده شود )
      فعلا قصد ندارم این کار رو انجام بدم
      با این حال اگر کسی بخواهد این کار را انجام دهد از نظر من مشکلی ندارد و سورس فشرده‌نشده را در اختیارش قرار خواهم داد
      اگر می‌خواهید سیستمی جدید طراحی کنید بهتر است تاریخ و زمان را که دو موجودیت جدا هستند را در دو فیلد قرار دهید

  4. طه می‌گوید:

    سلام. ممنون از زحمتی که کشیدین. من عادت ندارم برای کدهای جاوااسکریپت مورد نیازم در سایت‌های فارسی بگردم، چون چیزی پیدا نمی‌شود. برای تقویم فارسی، جستجویی کردم و بعد از چندین جواب بی‌ربط، با ناامیدی به وبلاگ شما رسیدم و چیزی دیدم که نظیرش با این دقت، در مدل‌های خارجی‌اش هم کم‌یاب است. از این بابت بسیار سپاس‌گذارم.
    من در حال طراحی سایتی هستم که برای ویرایش اطلاعات، صفحات لایت‌باکس (JQuery) باز می‌کند و محتویات این صفحه‌ها از طریق AJAX فراخوانی می‌شوند و می‌دانیم که کدهای ارسالی به این طریق، قابلیت اجرای مستقیم جاوااسکریپت را ندارند. البته برای اجرای جاوااسکریپت‌های دل‌خواه، حقه‌ها و ترفندهای بسیاری وجود دارد، از جمله ایجاد روتینی برای دیده‌بانی Textboxهایی با IDهای خاص، که در صورت پیدا شدن یکی از این‌ها، کد داخلش اجرا شود. این روش به‌خوبی جواب می‌دهد، اما اعمالش برای کاری مثل ایجاد فیلد تاریخ، باعث پیچیده شدن وحشتناک صفحه می‌شود. برای رفع این مشکل، بعد از تعریف Textbox، آیکونی گذاشتم مشابه آن‌چه که در نمونه‌ی شما وجود دارد و کاربر با کلیک بر روی آن، کد جاوااسکریپت مورد نظر شما را اجرا می‌کند و آیکون بدل را هم محو می‌کند و به این ترتیب، تغییری در خروجی حاصل نمی‌شود. حسن انجام این کار را با یک Alert ساده کنترل کردم، اما بعد از آن، هیچ اتفاقی نمی‌افتد که نمی‌افتد.
    من از خیلی از کتابخانه‌های JQuery در کدهایم استفاده کرده‌ام و نمی‌دانم که آیا اجرا نشدن کد شما تقصیر آن‌هاست، یا مشکل از جای دیگر آب می‌خورد. حدس دیگرم این است که شاید برنامه به دنبال آدرس‌های خاصی برای بارگیری ملزومات خود می‌گردد که من به خاطر قرار دادن فایل‌های بسته در دو فولدر عقب‌تر، آن‌ها را از دسترس اسکریپت خارج کرده باشم.
    متأسفانه هیچ نسخه‌ی آپلودشده‌ای از آن‌چه که در دست انجام دارم، آماده نیست. البته ویرایش تاریخ فارسی، برای پروژه‌ی فعلی من که امروز و فردا باید برای تحویل آماده شود، لازم نیست، اما جاذبه‌ی آزمایش ابزاری به این زیبایی و ظرافت، مرا تا این نیمه‌های شب بیدار نگه داشت تا زیر و بمش را بررسی کنم.
    سرتان را درد آوردم. یک تشکر دیگر هم لازم است بکنم بابت ابزاری که برای ذخیره‌ی پنهانی تاریخ انتخاب‌شده‌ی کاربر به فرمت‌های دیگر پیش‌بینی کرده‌اید. فکر بکری است و بدون این، فکر می‌کنم ابزار شما برای بیش از هشتاد درصد برنامه‌نویسان به‌کلی بی‌فایده می‌شد.

  5. طه می‌گوید:

    شرمنده که دوباره مزاحم می‌شم و این‌جا رو شلوغ می‌کنم. مشکل من از این‌جا بود که شیء objCal1، چون از داخل تابع ویژه ساخته می‌شد، public نبود و بقیه‌ی توابع آن را نمی‌دیدند. من زیاد جاوااسکریپت بلد نیستم و این اندازه می‌دانم که برای تعریف یک متغیر عمومی، آن را باید بیرون از تابع تعریف کرد و راهی را نمی‌شناسم که از داخل یک تابع، متغیر عمومی تعریف کنیم. مشکل خودم را با «ماست‌مال» کردن حل کردم. یک شیء بیهوده از objCal1 را در ابتدای اسکریپت ساختم و بعد این شیء را مقداردهی کردم. می‌گویم بیهوده، چون در زمان تعریف این شیء، Textbox هنوز ایجاد نشده و بستگی به انتخاب کاربر دارد و خوشحالم که هیچ اخطار و اشکالی به وجود نیامد. امیدوارم روی همه‌ی مرورگرها این ماست‌مالی کار کند. اگر ایده‌ی استانداردی برای حل مشکل من دارید، ممنون می‌شوم راهنمایی بفرمایید.

    • امیرمسعود ایرانی می‌گوید:

      با سلام و تشکر از لطف شما

      برای اینکه از داخل تابع متغیری سراسری ایجاد کنید یکی از راه‌ها این است که تعریف متغیر را به صورت زیر انجام دهید:

      window[ 'objCal1' ] = ...;
  6. محمد می‌گوید:

    سلام ممنون از کار بسیار خوبتون
    می خواستم ببینم امکانش هست که به جای اینکه ID یک فیلد رو بهش بدیم تا اونو تبدیل به فیلد تاریخ کنه ، از روندی استفاده بشه که بشه نام کلاسی که اون فیلد داره رو بهش داد تا تموم فیلدهایی که از اون کلاس هستند رو تبدیل به فیلد تاریخ کنه؟ (دقیقا مثل کاری که توابع jQuery انجام میده)

    • امیرمسعود ایرانی می‌گوید:

      اگر قرار باشد ایجاد شیء تقویم بر اساس class باشد و با توجه به دلیل شیءگرا بودن ایجاد تقویم
      نیاز است که اشیا داخل یک حلقه ایجاد شوند. به هر حال لازم است که inputها یک id داشته باشند
      یک کوتاه مانند نمونه کد زیر می‌تواند این کار را انجام دهد:

      var inputs = document.getElementsByTagName( 'input' );
       
      for( var i = 0; i < inputs.length; ++i ) {
       
      	if( inputs[ i ].type == 'text' && inputs[ i ].className == 'pdate' ) {
      		window[ 'objCal' + i ] = new AMIB.persianCalendar( inputs[ i ].id );
      	}
       
      }
  7. امیر می‌گوید:

    باسلام
    میخواستم از کار خوبتون و از زحمتی که کشیدید تشکر کنم.
    کار باهاش راحته و تغییر استایل هم کارایی زیادی داره
    سربلند باشید

  8. سعید می‌گوید:

    با سلام وسپاس از کار خوبتون
    یه سوال دیگه ایا امکان این هست که تقویم در یه بازه زمانی محدود نمایش داده بشه مثلا از ۵ سال قبل تا امروز ویا برعکس
    ممنون

    • امیرمسعود ایرانی می‌گوید:

      سلام

      در حال حاضر این امکان در تقویم وجود ندارد
      بررسی تاریخ ورودی کاربر برای قرارداشتن در دامنه‌ی دلخواه کاری ساده است که با چند خط جاوااسکریپت قابل انجام است.
      ساده‌ترین راه این است که تاریخ را در فیلدی جداگانه با فرمت JD ذخیره کنید و محتوای فیلد اضافه را که یک عدد است با JD تاریخ ابتدا و انتها مقایسه نمایید

  9. mobo می‌گوید:

    با سلام به شما
    ممنونم از اسکریپت خوبتون

    یه مشکل داشتم گفتم از شما بپرسم، ممنون میشم راهنمایی کنین

    من میخوام یه تاریخ شروع داشته باشم و یه مدت مدت اجرا (تعداد روز) که مدیر وارد می کنه (مثلا شروع ۱۳۹۱/۰۳/۰۳ به مدت ۳ روز ) و میخوام این روزها رو محاسبه کنم و در یک dropdownlist نمایش بدم. (محتوای dropdownlist بعد از محاسبه -> 1391/03/03 – 1391/03/04 – 1391/03/05 ) نمیدونم چطوری میتونم یکی یکی روزها رو محاسبه و در dropdownlist بزارم؟؟

    • امیرمسعود ایرانی می‌گوید:

      یک اسکریپت کوتاه برای انجام این کار شما آماده کردم که تاریخ‌های مورد نظر شما رو alert می‌کنه
      اگر مشکلی در استفاده از این اسکریپت دارید لطفا در ایمیل پیگیری کنید

      var pdate = isPersianDate( A$( 'pdate1' ).value ),
      	new_pdate,
      	cur_jd;
       
      if( pdate ) {
      	cur_jd = persian_to_jd( pdate[ 0 ], pdate[ 1 ],  pdate[ 2 ] );
       
      	for( var i = 1; i <= 3; ++i ) {
      		new_pdate = jd_to_persian( cur_jd + i );
      		alert( new_pdate.join( "/" ) );
      	}
       
      }
  10. هومن می‌گوید:

    سلام
    امکانش هست که ساعت را هم نمایش بده؟
    ویرایش جدید را کی عرضه می کنید؟

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      در مورد «ساعت» در نظرهای قبلی توضیح دادم.
      در مورد نسخه‌ی جدید،
      نگارش فعلی به پایداری و اطمینان قابل قبولی رسیده
      برای اضافه شدن ویژگی‌های جدید باید فرصت پیدا کنم تا بتوانم این کار را انجام دهم

  11. هومن می‌گوید:

    اگر امکانش هست تقویم را طوری درست کنید که بشه یک سری تنظیمات اولیه را موقع تعریف تعیین کرد

    • امیرمسعود ایرانی می‌گوید:

      هم‌اکنون هم امکان تعریف تنظیمات در هنگام ساخت تقویم وجود دارد
      اگر تنظیم خاصی را نیاز دارید آن را از طریق ایمیل برایم بفرستید تا در فهرست کارهای آینده قرار بگیرد
      amibct در سایت گوگل

  12. هومن می‌گوید:

    سلام
    از ساعت برای ثبت در فرم می خواهم استفاده کنم , در واقع کافیه تقویم ساعت سیستم را به آخر تاریخ اضافه کنه و لازم نیست از ساعت به عنوان ورودی استفاده بشه
    در مورد تعریف تنظیمات در هنگام ساخت تقویم , در مثالهایی که زده شده فقط آیدی و نام وجود دارد اگر بتوانید مثالی که در آن همه تنظیمات وجود داشته باشد به مثالها اضافه کنید خیلی خوب میشود
    مثلا در موقع تعریف مشخص شود که تقویم در صفحه نمایش داده شود یا متصل به دکمه باشد,
    زمان به عنوان خروجی نمایش داده شود یا نه ,
    محدوده زمانی مشخص شود,
    نوع رنگ بندی تقویم مشخص شود,…
    متشکر

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      مطلبی که قبلا هم در مورد ساعت اشاره کردم همین بود
      اضافه کردن ساعت فعلی کار آسانی است ولی به قول معروف «بزن برویی» به حساب می‌آید و این شیوه از کدنویسی را به هیچ وجه نمی‌پسندم. اضافه کردن ساعت فعلی در سمت اسکریپت کار ساده‌ای است و خودتان هم می‌توانید انجام دهید.
      در مورد تنظیمات، غیر از رنگبندی که کاملا توسط CSS انجام می‌شود بقیه‌ی ویژگی‌ها در تقویم وجود ندارد و باید در نسخه‌های بعدی پیاده سازی شود.
      لطفا در صورتی که ویژگی خاصی نیاز دارید از طریق ایمیل amibct در گوگل آن را برایم بفرستید تا بخش نظرها وبلاگ به «نظرها» اختصاص یابد.
      با تشکر

  13. امیرحسین می‌گوید:

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

    • امیرمسعود ایرانی می‌گوید:

      سلام
      یک form ایجاد کنید و دو input یکی از نوع text برای تقویم و یکی از نوع hidden برای ارسال تقویم میلادی به سرور ایجاد کنید
      اگر برای فیلد نوع text صفت name را مشخص نکنید محتوایش به سرور ارسال نمی‌شود. همان طور که در توضیحات بالا وجود دارد با مشخص کردن تنظیمات زیر می‌توانید به هدف خود برسید. فرمت تاریخ ارسالی به سرور را نیز می‌توانید به دلخواه مشخص کنید.

      <form method="get" action="server.php">
      	<input type="text" id="pcal1" class="pdate" />
      	<input type="hidden" id="pcal1_en" name="pcal1_en"/><br />
      	<input type="submit" />
      </form>
      <script>
      	var objCal1 = new AMIB.persianCalendar( 'pcal1',
      		{ extraInputID: "pcal1_en", extraInputFormat: "YYYYMMDD" }
      	);
      </script>
  14. پوریا می‌گوید:

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

  15. فهیمه می‌گوید:

    salam
    من از farsicalender.js استفاده کردم برای کنترل اینکه تاریخ وارد شده از تاریخ روز بیشتر نباشه یا کلا مقایسه تاریخ با تاریخ روز شمسی چیکارکنم؟
    برنامه شما این قابلیت رو نداره!!!
    کمکم کنید

    • امیرمسعود ایرانی می‌گوید:

      سلام
      ساده‌ترین کار اینه که یک فیلد hidden اضافی ایجاد کنید و به کامپوننت بگید که تاریخ رو با فرمت JD در اون فیلد ذخیره کنه
      فرمت JD یا روز ژولین عددی است که هر روز یکی به مقدارش اضافه می‌شود
      با مقایسه‌ی عدد محاسبه شده توسط کامپوننت و JD دلخواه می‌تونید به هدفتون برسید
      برای محاسبه‌ی JD روز فعلی از کد زیر استفاده کنید

      var d = new Date(),
      	todayJD = gregorian_to_jd( d.getFullYear(), d.getMonth() + 1, d.getDate() );

      بعد از اجرای این دستور، متغیر todayJD عدد JD متناظر با امروز رو نگهداری خواهد کرد
      این عدد در PHP هم به سادگی قابل محاسبه است
      می‌تونید همین عدد رو در بانک اطلاعاتی هم ذخیره کنید. مقایسه و مرتب‌سازی اون خیلی ساده‌تر از تاریخ است

  16. سعید می‌گوید:

    کارتان عالی است . واقعا با دیدن یک پکیج به این خوبی آن هم در یک سایت فارسی زبان شگفت زده شدم . خدا اجرتان بدهد .
    موفق باشید

  17. فهیمه می‌گوید:

    مرسی از پاسختون.
    این todayJD تاریخ روز شمسی رو نگهداری میکنه؟
    بعد چطوری این todayjd رو با تاریخ وارد شده توسط کاربر مقایسه کنم؟ میخام قبل از ذخیره تو دیتابیس مقایسه انجام بشه…تاریخ تولید وارد شده با تاریخ روز مقایسه بشه و اگه بیشتر بود مثلا یه پیغامی بده.

    • امیرمسعود ایرانی می‌گوید:

      بله
      todayJD یک عدد هست که معادل امروز است
      کامپوننت تقویم هم یک ویژگی دارد که می‌تواند JD روز انتخابی توسط کاربر را در یک فیلد ذخیره کند
      روش استفاده از این ویژگی در توضیحات وجود دارد
      شما می‌توانید این دو عدد را با هم مقایسه کنید و در صورت نیاز به کاربر هشدار بدهید
      لطفا در صورت حل نشدن مشکل از طریق ایمیل amibct در gmail گفتگو را دنبال کنید

  18. علی می‌گوید:

    سلام و درود و خداقوت بر استاد عزیز
    خسته نباشید و تشکر بابت زحمات بی دریقتون

    امکان نمایش inline برای این تقویم وجود نداره؟ یعنی نیازی به کلیک روی دکمه نباشه و همینجور از ابتدا باز نمایش داده بشود.

    ارادت و آرزوی مزید توفیقات

    • امیرمسعود ایرانی می‌گوید:

      سلام و تشکر از لطف شما

      برای باز کردن تقویم از طریق اسکریپت با استفاده از متد showHidePicker روی شیئی که ایجاد کردید می‌تونید این کار رو انجام بدید
      اگر منظور شما این باشه که تقویم همیشه باز باشه
      فعلا این امکان وجود نداره
      این گزینه را هم در برنامه‌ی پیاده‌سازی قرار می‌دم
      هر موقع که کمی فرصت پیدا کنم کارهایی هست که باید انجام بشه

  19. golshid می‌گوید:

    سلام- فقط خواستم خیلی خیلی تشکر کنم. خیلی دنبال این تقویم گشتم . بسیار ممنون-همیشه موفق و پیروز باشید

  20. سامان می‌گوید:

    خیلی ممنون

  21. جلال جابر می‌گوید:

    سلام
    مرسی از کار بسیار خوبتون و اینکه دانشتون رو برای همه قابل استفاده می‌کنین

  22. مهرتاش می‌گوید:

    خیلی خیلی ممنون از شما که کار با ارزشتون رو به رایگان به اشتراک گزاشته اید.
    به امید موفقیت روز افزون شما

  23. مرتضی می‌گوید:

    آقا خیلی ممنون از این پروژه ، راضی باش ازش توی یک پروژه استفاده کردم و البته لینک وب سایت شما را هم درون سایت اضافه می کنم.

    با تشکر مجدد

  24. امین می‌گوید:

    ممنون و بسیار عالی

  25. احمد رضا می‌گوید:

    سلام
    بسیار عالی

  26. ali می‌گوید:

    آقا دمت گرم خیلی کاربردی بود.مرسی

  27. امین حسینی می‌گوید:

    با سلام مجدد
    من در یک وب سایت تقویم فارسی شما رو بکارگیری کردم و مجدد از زحماتتون تشکر میکنم
    مخصوصا با فرمت های قابل قبول و ویژه ای که برای این تقویم استفاده کردین
    من تاریخ میلادی رو که در فیلد Extra نمایش داده میشه رو توی دیتابیس ذخیره کردم
    حالا موقع ویرایش تاریخ چطور اون رو به شمسی برگردونم که مجدد بشه تاریخ رو ویرایش کرد
    ممنون میشم اگه کمکم کنین .. آبا تقویم شما میلادی به شمسی رو هم تبدیل میکنه ؟
    مرسی

  28. حمید می‌گوید:

    سلام و تشکر بابت تقویم بسیار عالی و زیباتون
    با اجازه شما یه تغییر کوچیک تو کدتون دادم استفاده اش راحت تر میشه
    ۱- در انتهای فایل اصلی اسکریپت کد زیر اضافه بشه

    (function($) {
    	$.fn.persiancalendar = function() {
    		return this.each(function (index, element) {
    			id = jQuery(element).attr("id");
    			new AMIB.persianCalendar(id);
    		});
    	};
    })( jQuery );

    ۲- با یک خط کد میشه تمامی آی دی هایی که مثلا با pcal شروع میشن رو تبدیل به فیلد تاریخ کرد:

    jQuery("[id^=pcal]").persiancalendar();
  29. مجتهدی می‌گوید:

    امیر‌مسعود جان عالی بود…
    پیشنهاد می‌کنم github رو علم کنی…
    هم سریعتر و هم با کیفیت‌تر میشه ورژن‌ها رو کنترل کنی…
    wiki و documentation و… هم که کامل‌ه…

    • امیرمسعود ایرانی می‌گوید:

      سلام و تشکر
      هنوز به نظرم پروژه کمی کار داره تا به شرایط ایده‌آل برای متن‌باز شدن کامل تبدیل بشه
      کامنت‌های خیلی کمی در کد اصلی هست و کمی هم سیستم مدیریت رویدادها رو باید بهبود بدم
      از طرف دیگه فکر می‌کنم با یک محیط حرفه‌ای در میان برنامه‌نویسان ایرانی فاصله داریم و کمی برای این کارها زود است
      با این حال وقتی شرایط از همه نظر بهتر بشود انشاءالله این کار را می‌کنم
      با تشکر

      • مجتهدی می‌گوید:

        با یک unminify ساده به حالت غیر فشرده دسترسی پیدا می‌کنیم…
        شما متن باز و اولیه رو توی github قرار بدید، مردم به مرور آپدیتش میکنن…
        از کامنت گذاریش تا جامع شدن ماژول‌ها، اومدن نمونه‌های تکمیل شده با زبان‌های برنامه نویسی متفاوت و…
        به قدری سیستم‌های مختلف توی GitHub هست که از همون نسخه‌های Minor شروع کردن و با کمک مردم بزرگش کردن.
        اگر هم بحث یادگیری گیت‌هاب‌ه : http://try.github.io/

        • امیرمسعود ایرانی می‌گوید:

          سلام
          کد فشرده نشده رو برای چند نفر فرستادم هیچ بازخورد مثبتی دریافت نکردم
          علتش هم همون نداشتن کامنت و فقر در زمینه‌ی برنامه‌نویسی جاوااسکریپت هست.
          استفاده از unminify هم کمک زیادی نمی‌کنه، چون کد فقط minify نشده، بهینه‌سازی هم شده قبلش هم کد پیچیده بوده
          غیرممکن نیست ولی بیش از حد سخته

    • amir می‌گوید:

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

      • امیرمسعود ایرانی می‌گوید:

        سلام
        در حال حاضر کمی گرفتارم
        سعی می‌کنم تا اندازه‌ای کامنت‌های کد را بیشتر کنم
        و در اولین فرصت اون رو منتشر می‌کنم

  30. امیـــر می‌گوید:

    با سلام و خسته نباشید
    میخواستم بدونم این تقویم انتخاب کننده میلادی هم داره یعنی دیتا پیکرش به جای تقویم شمسی میلادی رو نشون بده و اونو بتونه در فیلد اضافی به شمسی تبدیل بکنه ؟

    • امیرمسعود ایرانی می‌گوید:

      سلام

      خیر. برای تقویم میلادی گزینه‌های زیادی وجود دارند

      • امیـــر می‌گوید:

        ولی اگر این امکان هم بهش اضافه بشه خیلی عالی خواهد شد
        چون در بعضی فرم ها کاربر نیاز داره بعضی از فیلد ها رو میلادی بزنه و بعضی دیگه رو فارسی ….
        مثلا برای ثبت یه بلیت پرواز خارج از کشور کاربر راحتره که تاریخ رو به میلادی بزنه و در ورود اطلاعات مشتری ،راحت تر اینه که تاریخ تولد فرد رو به شمسی وارد کنه …
        عالی میشه اگر اینو تو نسخه های آینده به سیستم اضافه کنید …
        خیلی هم تشکر از این اسکریپت عالی که زحمتشو کشیدید،حرف نداره …
        فقط اگه تو جایی مثل github یا bitbucket منتشر میشد ما هم میتونستیم توی توسعه کد کمکتون کنیم …

  31. zahra می‌گوید:

    فوق العاده بود..

  32. حامد می‌گوید:

    ممنون واقعا بعد از این همه سال دیدم که هنوز تقویم جای کار داره و چقدر زیبا شما اینکار رو انجام دادید ، ممنون از سورس ، امکانش هست که من از توابع شما جهت ایجاد کامپوننت در wpf استفاده کنم ؟ و قطعا ذکر میکنم منبع تمام سورس ها رو !

    بازم ممنون

  33. میثم خوشقدم می‌گوید:

    سلام خسته نباشید
    بنده و همکارانی که با کتابخانه ارزشمند جناب عالی کار کرده اند۱ مشکل اساسی داشتند.
    ۱- کتابخانه شما ماسک نمی گیرد یعنی بر اساس فورمت تاریخ درج / های بین ماه و روز گذاشته شود و کاربر نتواند برای تاریخ همچین مقداری وارد کند ۶۶۶۶۶۶۱/۱۱۱۱/۱۱۱
    اگر می تونید کتابخانه تون با لینک زیر ادغام نمایید.
    http://digitalbush.com/projects/masked-input-plugin/
    موفق باشید

    • امیرمسعود ایرانی می‌گوید:

      سلام و تشکر از لطف شما
      اگر دقت کرده باشید یکی از ویژگی‌های این تقویم دریافت تاریخ با فرمت‌های مختلف است
      مثلا ۱۲۰۵ یک عدد قابل قبول برای این فیلد است
      قرار دادن ماسک این ویژگی را از کار خواهد انداخت
      نگرانی شما از دو جهت می‌تواند باشد
      اول کارایی برای کاربر که با توجه به ۱۸ فرمت قابل قبول شاید جایی برای مطرح شدن نداشته باشد
      و نگرانی دوم دریافت تاریخ صحیح در سمت سرور که آن با کمک فیلد اضافی به فرمت دلخواه شما قابل دریافت است و خالی‌بودن آن نیز نشان می‌دهد که تاریخ نادرست بوده

      با تشکر

  34. امیر می‌گوید:

    سلام مهندس
    خواستم از شما بابت زحمتتون تشکر کنم

  35. آسمان آبی می‌گوید:

    با سلام
    با تشکر از تقویم زیباتون
    یک سوال داشتم initialDate حتما باید فارسی باشه؟ (برای این که تاریخ امروز را برایش set کنیم)

  36. ساسان می‌گوید:

    با سلام و احترام وتشکر از راهنمایی های لازم , من از تقویم شما در کد jsp -java servlet page استفاده میکنم تمام بخش ها را درست عدد کرده ام اما نمیدونم چرا روی استایل ها مشکل دارد یعنی دکمه نمایش تقویم درکنار textboها قرارنمیگیرد آیا باید استایل را تغییرات داد

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      در مورد بخش جاوا چیزی نمی‌دانم. برای اینکه متوجه بشوید اشکال نمایش تصویر چیست. با استفاده از Inspector در مرورگرهای Firefox یا Chrome روی محل نمایش دکمه کلیک کنید و بعد از اینکه محل دکمه را پیدا کردید، در بخش CSS بررسی کنید که محل اشاره شده برای تصویر درست است یا خیر. ممکن است لازم شود CSS را تغییر دهید یا محل ذخیره کردن تصویر را عوض کنید
      با تشکر

  37. saeed می‌گوید:

    آقا دمت گرم خیلی استفاده کردم از تقویمت تو یه پروژه بزرگم استفاده کردم جواب داد
    مرسی

  38. mohamad می‌گوید:

    با سلام
    ممنون از زحمات شما
    در صورتیکه کاربر تاریخ اشتباه وارد کرد چطور می شود پیغام خطا نشان داد؟

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      برای آگاه شدن از تغییر تاریخ توسط کاربر می‌توانید از رویداد onchange که مثال آن به همراه بسته موجود است استفاده کنید
      خالی بودن فیلد کمکی به معنی نادرست بودن تاریخ است
      به علاوه از تابع isPersianDate هم برای بررسی صحیح بودن یک تاریخ می‌توانید کمک بگیرید

  39. حسن امین می‌گوید:

    با عرض سلام و خسته نیاشید

    یک سئوال داشتم . چطور میشه دوتا تقویم با فیلد extra برای هر کدومدر یک صفحه داشت؟ دوتا تقویم را با کدی که در بالا نوشتید ر یک صفحه آوردم ولی با فیلد extra نتونستم. این کار را برای فرم جستجو بر اساس یک بازه تاریخی می خواستم.

    با تشکر

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      این کار مشکل خاصی ندارد
      دو فیلد اضافی ایجاد کنید و id هر کدام را به یکی از فیلد‌های اصلی مرتبط کنید
      اگر فرمت فیلد کمکی را به صورت JD تعریف کنید، مقایسه‌ی آن و جستجوی آن کار آسانی خواهد بود

      • حسن امین می‌گوید:

        سلام امیر آقا

        من یک چنین حالتی دارم که با گرید اتوماتیک ایجاد میشه

        می خواستم بدونم تو این حالت چون id ها یکسانند می توان با name که متفاوت برای هر input است آنها را تبدیل به تقویم کرد
        با سپاس فراوان.

  40. پیام می‌گوید:

    سلام
    دستتون درد نکنه واقعا خیلی عالی بود دنبال یه پلاگین خوب برای تاریخ بودم که پیدا کردم :)

    فقط اگر امکانش بود که بر اساس کلاس المنت بشه اون ها رو استفاده کرد خیلی عالی میشد

    یعنی به جای ِ اینکه تک تک المنت ها رو با ای دی انتخاب کنیم به صورت کلاس تعریف میکردیم .

    باز هم ممنون ;)

    • امیرمسعود ایرانی می‌گوید:

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

      با سپسا

  41. نسرین می‌گوید:

    سلام
    ممنون از این تقویم زیبا و کاربردی
    من از این که تقویم رو توی UpdatePanel استفاده کنم به مشکل برخوردم
    یه دوستی گفت که از UserControl استفاده کرده!!
    اما من نمیدونم چطوری :(
    شما نمیتونین کمک کنین؟
    راه دیگه ای نداره؟
    ممنون
    :)

    • امیرمسعود ایرانی می‌گوید:

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

  42. نسرین می‌گوید:

    سلام
    بازهم تشکر میکنم از این حرکت زیبا

    من تونستم از این تقویم درون آپدیت پنل استفاده کنم
    گفتم شاید برای دیگران هم مفید باشه
    دلیل این که این تقویم درون آپدیت پنل کار نمیکنه اینه که اسکریپت ها فقط در هنگام لود صفحه یک بار اجرا میشن و
    وقتی که اطلاعات آپدیت پنل، آپدیت میشه تنظیمات تقویم از بین میره برای همین باید در هر بار آپدیت شدن صفحه توسط آپدیت پنل این تنظیمات یک بار دیگه اجرا بشن :)
    که برای این کار میتونین از این کد استفاده کنین و اونو توی پیج لود صفحتون کپی کنین:

    ScriptManager.RegisterStartupScript(
    	IdUpdatePannel,
    	this.GetType(),
    	"MyAction",
    	"var objCal1 = new AMIB.persianCalendar( 'pcal1' );",
    	true
    );
  43. سالار می‌گوید:

    با تبدیل تابع A$ می شه از روش های دیگه هم استفاده کرد که برای من لازم بود:

    var A$=function(b){return (typeof(b)==="string")? document.getElementById(b):b}
    var element=someOtherFunction();
    new AMIB.persianCalendar(element);
  44. علی می‌گوید:

    با سلام من نیاز به تاریخ هایی با فرمت ۱۶-۰۷-۱۳۹۲ ضمنا در یک فرم دو تا تاریخ یکی برای شروع و یکی برای پایان جستجو می خوام قرار بدم لطف می کنید در این دو مورد کمک کنید
    با تشکر

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      برای مورد اول می‌توانید از فیلد کمکی استفاده کنید و یک تکنیک دیگر هم در کامنت‌ها شرح داده شده که می‌توانید آن را مطالعه کنید
      برای مورد دوم هم فعلا تقویم این کار را به صورت اتوماتیک انجام نمی‌دهد. ولی با استفاده از تابع onchange خودتان می‌توانید عملکرد مورد نیاز را پیاده‌سازی کنید

  45. سعید می‌گوید:

    اقا کارت محشر بود،فوق العاده ممنون(عزا گرفته بودم سر این ماجرای تقویم:D)

  46. امیر می‌گوید:

    با درود فراوان

    آقا کارتون خیلی عالی بود فوق العاده زیبا و کارامد

    خیلی خیلی ممنون

  47. مجید می‌گوید:

    سلام و خسته نباشین
    این کنترل تو صفحاتی که از مستر پیج inherit میشن کار نی کنه ؟
    چرا ؟

    • امیرمسعود ایرانی می‌گوید:

      با سلام و سپاس
      بنده با سیستم دات نت آشنایی ندارم. حتما اشکالی در ترتیب فراخوانی اسکریپت یا اشکالی در شناسه‌های فیلدهای متنی وجود دارد
      با بررسی سورس صفحه‌ی نهایی و کمک گرفتن از Error Console مرورگر بررسی کنید که اشکال از کجا ایجاد می‌شود

  48. امین می‌گوید:

    با سلام و تشکر به خاطر این تقویم خوب
    من یک مشکل دارم با این تقویم و اونم اینه که وقتی فرمی دارای تگ باشه و تقویم در خط قبل در بالای آن تگ استفاده بشه تقویم میره زیره تگ SELECT . این مساله فقط در IE6 اتفاق می افته . ممنون میشم اگه بررسی کنید .

    • امیرمسعود ایرانی می‌گوید:

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

  49. سمیرا می‌گوید:

    سلام من توی پروژه خودم از این برنامه استفاده میکنم

    چطوری میتونم عکس کنار تاریخ رو حذف کنم ؟
    نمی خوام کنار input هام یک عکس تاریخ ظاهر بشه ممنون میشم راهنماییم کنید

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      یکی از تنظیمات( option ) که می‌توانید به آن مقدار بدهید «autoCreateButton» است
      یعنی به صورت زیر:

      var cal = new AMIB.persianCalendar( 'pcal1',
          { autoCreateButton: false }
      );
  50. ایلیا اکبری فرد می‌گوید:

    با سلام. برای حالتیکه بخواهیم تشخیص دهیم مقدار ورودی توسط کاربر ، معتبر است یا خیر ، آیا تابعی وجود دارد. بطور مثال در رویداد onchange هرگاه مقدار غیر معتبر بود استایل خاصی را به input اعمال کنم. با تشکر.

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      اگر هدف شما فقط تابع onchange باشد، این تابع به صورت پیش‌فرض تاریخ را ارزیابی می‌کند و اگر مقدار ارسالی صحیح نباشد مقدار false به تابع شما ارسال می‌شود
      برای ارزیابی تاریخ‌های دیگر هم می‌توانید از تابع isPersianDate استفاده کنید که یک رشته دریافت می‌کند و اگر بتواند آن را صحیح تشخیص دهد آرایه‌ای شامل تاریخ فارسی را برمی‌گرداند. در غیر این صورت مقدار false در خروجی قرار می‌گیرد

  51. امیر می‌گوید:

    با سلام

    آیا امکان دارد این تقویم رو بصورت Selectable استفاده کرد ؟ یعنی همزمان بشه چند تاریخ توسط کاربر انتخاب بشه و در یک TextBox نمایش داده بشه .

  52. حمید می‌گوید:

    با سلام و تشکر
    داشتم با پلاگین jquery Dialog کار میکردم ولی dialog در وسط صفحه باز نمیشد بعد از کلی ازمون و خطا متوجه شدم وقتی اسکریپت تقویم رو لود میکنم این مشکل بوجود میاد. امکانش هست براتون چک کنید مشکلش برطرف بشه.
    سپاسگذارم

  53. حسام می‌گوید:

    سلام
    لطفا امکان این رو اضافه کنید که با کلیک کردن روی input تاریخ باز بشه.
    ممنون

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      در حال حاضر تقویم با دوبار کلیک باز می‌شود
      باید یک گزینه برای انتخاب بین دو حالت قرار بدهم
      انشاء‌الله در نسخه‌ی بعدی این تغییر هم انجام خواهد شد

    • محمد صادق ترسلی می‌گوید:

      سلام
      اول از همه خیلی ممنون از این اسکریپت واقعا عالی که هیچ نقصی نداره
      دوم در جواب دوستمون کافی این کد
      ondblclick=function(a)
      رو در فایل
      js-persian-cal.min.js
      پیدا کنی
      و به این تغییرش بدی
      onclick=function(a)

  54. JavaScripter می‌گوید:

    کاری فوق‌العاده ارزشمند، اما سرشار از کمبود امکانات، بالاخص:
    ۱- callback برای رویدادهای مختلف
    ۲- نمایش تقویم به صورت باز شده بر روی صفحه (نه به صورت popup)

    • امیرمسعود ایرانی می‌گوید:

      با سلام و سپاس
      در مورد رویداد callback لطفا هر موردی که فکر می‌کنید نیاز است و در تقویم درج نشده، بفرمایید.
      در مورد popup اگر منظورتان باز شدن پنجره‌ی جدید است، که این کار به دلیل وجود popup blocker روی مرورگرها غیرمنطقی و غیرقابل توجیه است

  55. سجاد می‌گوید:

    سپاس از شما و درود بر شما که برای توسعه وب فارسی/پارسی تلاش میکنید.
    خداوند نگهدارتان باد.

  56. امیر حسین می‌گوید:

    ممنون خیلی کمکم کردی. امیدوارم منم بتونم تو این رشته به هم وطنام کمک کنم

  57. صابر فتح الهی می‌گوید:

    سلام
    برای استفاده در جی کوئیری با استفاده از فیلدهای اضافی می توان مانند زیر عمل کرد:
    ابتدا تابع زیر را به انتهای فایل اسکریپت اضافه کرد.

    ( function( $ ) {
    	$.fn.persiancalendar = function(extra) {
    		return this.each( function( index, element ) {
    			id = jQuery(element).attr("id");
    			new AMIB.persianCalendar( id, extra );
    		} );
    	};
    })( jQuery );

    و برای استفاده به این طریق می توان عمل کرد:

    jQuery("#myDate").persianCalendar({
    	initialDate: '1392-10-20',
    	defaultDate: '1392-10-20'
    });
  58. azade می‌گوید:

    عالی بود…

  59. کامران می‌گوید:

    سلام و خسته نباشید
    واقعا ممنونم مرسی

  60. محمد می‌گوید:

    واقعا عالی و مفید بود دست شما درد نکنه

  61. بهرنگ می‌گوید:

    سلام عالی هست دست شما درد نکنه
    فقط اگر بخواهیم فرمت تاریخ مثلا به صورت ۱۲-۰۱-۱۳۹۲ نشان داده بشه چکار کنیم؟

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      در این نگارش تقویم، امکان عوض کردن شکل تاریخ در فیلد اصلی وجود ندارد
      با استفاده از فیلد کمکی که توضیحات آن در قسمت بالا درج شده است، می‌توانید این کار را انجام بدهید
      اگر شناسه‌ی فیلد کمکی را مساوی فیلد اصلی قرار بدهید، تاریخ با فرمت دلخواه در فیلد اصلی ذخیره می‌شود

  62. چیا می‌گوید:

    ممنون … جالب بود .
    تشکر به خاطر اشتراک گذاری این ابزار مهم

  63. فرزان می‌گوید:

    سلام؛
    آقا من میخوام این تقویم رو توی یکی از فیلد های یک جدول که تعداد سطرهای جدول بصورت دینامیک میتونه اضافه بشه استفاده کنم یعنی کاربر روی + کلیک میکنه و یک سطر به سطرهای جدول اضافه میشه ولی تقویم فقط برای اولین سطر کار میکنه و نمیدونم object رو برای سطرهای دیگه بصورت دینامیک چطوری ایجاد کنم.
    میشه راهنمایی کنین؟

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      در قطعه کدی که ارسال فرموده بودید، از دستور clone برای اضافه کردن ردیف به انتهای جدول کمک گرفته بودید
      باید دو خط پس از این دستور اضافه بفرمایید تا مشکل شما حل شود
      اول، تخصیص یک شناسه‌ی منحصربه‌فرد به فیلد تاریخ موجود در ردیف جدید

      $( 'tr:last input' ).attr( 'id', 'datePicker' + rowCount );

      و دستور دوم، ایجاد یک فیلد تاریخ جدید با استفاده از شناسه‌ی بالا

      window[ 'dp' + rowCount ] = new AMIB.datePicker( 'datePicker' + rowCount );

      قطعه کدها آزمایش نشده و ممکن است خطایی جزئی داشته باشند

  64. حمید می‌گوید:

    دست شما درد نکنه آقای امیر مسعود. کار بسیار حرفه ای، پراستفاده و عالیی ارائه داده اید و من هم به سهم خود تشکر میکنم. من لازم است که تاریخ میلادی را به شمسی تبدیل کنم:

    چگونه میتوان تاریخ میلادی را به عنوان ورودی به این تقویم داد؟

    من در کامنتهای بالا مشابه این سوال را دیدم اما جوابی نیافتم.

    • امیرمسعود ایرانی می‌گوید:

      با سلام و تشکر
      بهترین راه این است که تاریخ را در سمت سرور به شمسی تبدیل کنید. با این حال
      یک قطعه کد در کامنت‌های بالا هست که از دستور gregorian_to_jd در آن استفاده شده
      و همچنین یک تابع دیگر هم هست به اسم jd_to_persian که همراه بسته وجود دارد
      jd یا julian day یک مدل تاریخ عددی است. برای تبدیل تاریخ میلادی به شمسی، اول تاریخ میلادی را با کمک کدی که بالاتر عرض کردم به jd تبدیل کنید بعد با استفاده از jd_to_persian آن را به تاریخ شمسی تبدیل و از آن استفاده کنید
      در نگارش جدید تقویم که به دلیل مشغله‌ی زیاد هنوز منتشر نشده، نیازی به انجام این کار نیست و تبدیل تاریخ میلادی و شمسی در کامپوننت تعبیه شده است

  65. زهره می‌گوید:

    سلام مرسی من استفاده کردم و خیلی عالی هست یک دنیا ممنون

  66. مهدی می‌گوید:

    سلام خدمت آقای امیر مسعود عزیز
    اولا خدا خیرت بده دوما خدا خیرت بده سوما هم خدا خیرت بده

    امیر اقا واقعا ازتون ممنونم,
    خیلی کار مارو راحت کردین یعنی از راحت هم یک چیزی اونترفتر شد :D

    انشالله همیشه موفق باشی

    خدا به همرات

  67. جاوید می‌گوید:

    سلام
    دستتون درد نکنه بسیار مفید و کاربردی بود
    تو سایتم استفاده کردم ازش
    http://www.bimeplus.com/omr.php?tabid=37
    فقط یک سوال چطوری میشه ماه های تک رقمی ۱تا ۹ رو بصورت زیر بنویسیم ؟
    مثلاً ۰۱ یا ۰۲ یا …. ۰۹ ؟

    • امیرمسعود ایرانی می‌گوید:

      با سلام و تشکر
      در این نگارش، امکان انجام این کار وجود ندارد
      با استفاده از فیلد کمکی می‌توانید تاریخ را به فرمت دلخواه به سرور بفرستید
      اگر در کامنت‌های بالا نگاه کنید، با یکی دادن شناسه‌ی فیلد اضافی در فیلد اصلی، می‌تونید تاریخ رو به فرمت دلخواه در فیلد اصلی نشون بدید
      که من این کار رو توصیه نمی‌کنم

  68. Saeed Dn می‌گوید:

    سلام.چطور میشه فیلد اولیه رو تاریخ روز قرار داد؟
    این منظورمه

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      ساده‌ترین راه اینه که از سمت سرور تاریخ روز رو بگیرید و در فیلد قرار بدید
      برای استفاده از جاوااسکریپت:
      با استفاده از توضیحات این کامنت هم می‌تونید روش گرفتن تاریخ روز رو در اختیار داشته باشید
      درج یک تاریخ خاص به صورت پیش‌فرض هم در مثال‌ها موجود است
      با سپاس

  69. با سلام

    خیلی خوب بود اگر زمان هم می توانستید در آن بگنجانید. تا بتوان ساعت و دقیقه را نیز در فرم ها استفاده نمود.

    با سپاس

  70. Saeed Dn می‌گوید:

    یه راه حل خیلی مبتدیانه و دم دستی پیدا کردم برای اینکه فرمت تاریخ ۱۰ کارکتری(yyyy/mm/dd) بشه.فایل ادیت رو از اینجا میتونید بگیرید.
    https://dl.dropboxusercontent.com/u/18400786/js-persian-cal.min.js

    • امیرمسعود ایرانی می‌گوید:

      با سلام و سپاس
      نگارش جدید تقویم که این قابلیت را در خود دارد حاضر است
      و متاسفانه همچنان به دلیل کمبود وقت قادر به انتشار آن نبوده‌ام
      امیدوارم بتوانم هر چه زودتر صفحه‌ی جدید تقویم و مستندات لازم را بنویسم تا نگارش جدید منتشر شود
      با سپاس دوباره

  71. majid می‌گوید:

    خیلی عالی بود

    با تشکر .

  72. پریا می‌گوید:

    سلام

    دستتون درد نکنه ، خیلی خیلی ممنونم :)

  73. مهدی علیدوست می‌گوید:

    با سلام و تشکر بابت تقویم شمسی
    نکته ای که به نظر می رسد این است که برای تقویم از فرمول معروف به ۲۸۲۰ ساله استفاده شده است. که این روش با قاعده رسمی تقویم شمسی کشور در برخی سالها همخوانی ندارد. به عنوان مثال سال ۱۴۰۳ سال کبیسه است ولی در فرمول بکار رفته توسط شما سال ۱۴۰۴ کبیسه اعلام شده است. روش رسمی که فعلا از آن استفاده می شود دوره ۳۳ ساله است.
    مقاله های زیادی در این باره از اهل فن موجود است که می تواند مشخص کننده تفاوت های دو سیستم باشد.

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      از دقت و راهنمایی شما سپاسگزارم
      در اولین فرصت سعی می‌کنم برای پیدا کردن یک راه حل مناسب کارهای لازم را انجام بدهم

  74. حمید می‌گوید:

    سلام
    می خواستم بدونم آیا کد جاوا اسکریپت شما امکان تبدیل تاریخ شمسی به میلادی و بلعکس رو هم داره یا نه ؟ اگه میشه چطوری ؟

    می خوام در یک لیست ( مثلا گرید )بصورت جاوا اسکریپت تاریخ ها رو تبدیل کنم و نمایش بدم

    تشکر فراوان

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      بله
      با استفاده از چهار تابع gregorian_to_jd، persian_to_jd، jd_to_gregorian و jd_to_persian که روش استفاده از آن‌ها در کامنت‌های بالای موجود است، می‌توانید تاریخ‌ها را به یکدیگر تبدیل کنید
      با واسط قرار دادن jd می‌توانید از تاریخ میلادی به شمسی و شمسی به میلادی عملیات تبدیل را انجام بدهید

  75. ایلیا اکبری فرد می‌گوید:

    با سلام و سپاس فراوان.
    میخواهم وقتی کاربر روی کامپوننت ، کلید space را فشار داد، تاریخ امروز درون کامپوننت نمایش داده شود. تابعی که تاریخ امروز را بر میگرداند چیست؟

  76. نرگس می‌گوید:

    سلام
    با تشکر از کار بسیار عالی و کم نقص شما
    میخواستم ببینم چطور میتونم این تقویم رو غیر فعال کنم؟

    • امیرمسعود ایرانی می‌گوید:

      با سلام و تشکر
      برای غیرفعال کردن تقویم می‌تونید ویژگی enabled رو روی شیء تقویم به false تغییر بدید

      var pcal1 = ...
      pcal1.enabled = false;
  77. نرگس می‌گوید:

    با عرض سلام مجدد
    من یه مشکلی دارم، میخواستم اگه ممکنه راهنمایی بفرمایید.
    موضوع اینه که من دوتا کنترل تقویم دارم که هر کدوم یه فیلد اکسترا برای ذخیره مقدار میلادیشون دارند و مقدار تقویم دوم به اولی وابسته است، یعنی میخوام مقدار تاریخ دوم از تاریخ اول بزرگتر باشه، اینو من توی رویداد onchange هندل کردم، به این صورت که اگه کاربر مقداری وارد کرد که بیشتر از تاریخ اولی بود بعد از نمایش پیغام مناسب، مقدار تاریخ دوم رو برابر با تاریخ اول میذاره( یعنی حداقلی که میتونه داشته باشه) و این کار رو هم با توابع jQuery انجام دادم. حالا مشکل اینجاست که وقتی مقدار یک تقویم دستی عوض نشه و با توابع jQuery صورت بگیره ظاهرا مقدار فیلد اکسترا تغییر نمیکنه، درسته؟ و این باعث شده هر جا دستی عوض نشه من به نتیجه اشتباه برسم. آیا راهی وجود داره بتونم این مشکل رو هندل کنم؟ ممنون میشم کمکم کنید.

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      لطفا برای پر کردن تاریخ از دستور fillDateField روی شیء ایجاد شده تقویم استفاده کنید

      var pcal1 = ...
      pcal1.fillDateField( '1393/3/15' );
      // or
      pcal1.fillDateField( [1393,3,15] );
  78. مبین می‌گوید:

    ممنون
    بسیار کار آمد بود

  79. علی کریمی می‌گوید:

    با سلام
    واقعا همچین مواردی در وب فارسی کمتر پیدا میشه.
    از زحمات شما واقعا متشکرم

  80. علی می‌گوید:

    مگه ادعا نمی‌کنید که این نرم‌افزار تحت لیسانس GNU General Public License هست؟ پس چرا لینک دانلود کد سورستون رو نمی‌تونم پیدا کنم؟

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      در مجوز GPL الزامی وجود ندارد که سورس اصلی همراه بسته‌ی دانلودی وجود داشته باشد. تا امروز هم هر کسی که درخواست ارسال سورس را داشته بنده برایش ارسال کرده‌ام.
      برای شخص شما البته روش تفاوت دارد. در صورت تمایل یک درخواست رسمی از طریق ایمیل amibct در gmail ارسال بفرمایید و آدرس خودتان را بفرستید تا پس از دریافت هزینه‌های مربوطه آن را روی سی‌دی برایتان بفرستم
      با تشکر

  81. احسان می‌گوید:

    دوست عزیز بسیار تقویم عالی است. از شما بسیار متشکرم.
    اگر امکانش هست در فیلد Extra قابلیت ثبت مقدار تاریخ به صورت float مطابق با smallDate و Datetime2 محیط SQL Server را نیز اضافه کنید.

    در هر صورت تقویم بسیار مناسبی می باشد. ممنوت از زحمات شما

  82. امین می‌گوید:

    سلام من وقتی از این تقویم استفاده می کنم موقع postback تقویم حذف میشه چیکار باید بکنم؟

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      هر بار که صفحه بارگزاری می‌شه دستورات تبدیل فیلد متنی به فیلد تقویم هم باید صدا زده بشه
      علاوه بر بخشی که شما این کد رو نوشتید، در یک بخش دیگر که بعد از PostBack هم فراخوانی می‌شه باید این کد رو تکرار کنید

    • یه دوست می‌گوید:

      از این اسکریپت استفاده کن:

      ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "tmp", "var objCal1 = new AMIB.persianCalendar( 'pcal1' );", false);
  83. یه دوست می‌گوید:

    دوست من فوق العاده بود.

  84. احسان می‌گوید:

    دوست خوبم به خاطر زحمتی که کشیدد و وقتی که گذاشتد بسیار سپاسگذارم. تقویم شما واقعا بهترین تقویم فارسی از این نوع روی وب هستش.
    بنده یک درخواستی دارم و اون اینکه تقویم رو طوری بنویسی که با یک کلیک کردن روی فیلد باز شه. در حالت عادی کاربر نمی دونه که باید برای باز شدن تقویم دوبار روی آن کلیک کنه که این باعث می شه که فکر کنه این یک فیلد تکست معمولیه. و خوب به نظر من این اشکال بزرگیه.
    البته من نظرات رو که می خوندم دیدم که یک نفر دیگه هم همین مشکل رو بیان کرده بود و فرموده بودید که این مشکل رو برطرف می کنید. حالا من نمی دونم وقت کردید یا نه.

    متشکرم . موفق باشید.

    • امیرمسعود ایرانی می‌گوید:

      با سلام و تشکر
      برای انجام این تغییر می‌توانید فایل اسکریپت را باز کنید و عبارت ondblclick را با onclick عوض کنید
      با تشکر

  85. امید آران می‌گوید:

    بسیار عالی
    خسته نباشید.

  86. محمد رضا می‌گوید:

    عالی بود
    مرسی از زحماتتون

  87. اسی می‌گوید:

    من در چند پروژه اخیر از این تقویم استفاده کرده ام. بسیار عالی! واقعاً دستتون درد نکنه. تقریبا همه احتیاجات من رو رفع کرده.(استفاده در دات نت با حداقل کد، بدون نیاز به تغییر کد ها ، کاملاً کارآمد… )
    قصدم این بود که مجدداً از شما برای زحمت بسیاری که کشیدید تشکر کنم. خدا خیرتون بده.

  88. رضا می‌گوید:

    سلام خسته نباشید
    ممنون از تقویم بسیار عالی تون
    من تو یکی از پروژه هام به یک مشکل برخوردم
    و اونم اینه که میخوام بدونم که مثلا امروز که یکشنبه ۳۰ شهریور ۱۳۹۳ هست ، ۳۰ شهریور سال ۱۳۹۴ چند شنبه میشه؟
    همینطوری به سمت سال های بعدی و قبلی (۳۰ شهریور سال ۱۳۹۸ شهریور سال ۱۳۷۰ شهریور سال ۱۳۶۲)

    ممنون میشم یک راهنمایی بفرمایید که بدونم چجوری باید عمل کنم
    تشکر

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      اگر منظور شما استفاده از جاوااسکریپت باشد، دو راه ساده وجود دارد
      دستور getDay روی شیء Date در جاوااسکریپت روز هفته را بر می‌گرداند
      همین طور، محاسبه‌ی باقیماده‌ی تقسیم تاریخ JD بر عدد ۷ می‌تواند شما را به نتیجه برساند.
      برای تبدیل تاریخ شمسی به تاریخ میلادی یا JD می‌توانید از چهار تابع gregorian_to_jd، persian_to_jd، jd_to_gregorian و jd_to_persian که روش استفاده از آن‌ها در کامنت‌های بالای موجود است استفاده کنید.

  89. رضا می‌گوید:

    ممونم
    بسیار لطف کردید

  90. omid می‌گوید:

    با تشکر از شما. یه سوال. چطور میشه تاریخ رو به حروف تبدیل کرد به همراه روزش؟
    مثال : ۱۳۹۳/۰۷/۰۳ –> پنج شنبه ۳ مهر ۱۳۹۳

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      در مورد سال و روز ماه که مشکلی وجود ندارد.
      ماه (مهر) و روز هفته(پنجشنبه) متغیرهایی هستند که باید محاسبه شوند
      ماه هم که با استفاده از یک آرایه قابل محاسبه است. تنها روز هفته است که نیازمند انجام محاسبات است
      با استفاده از دستور getDay روی شیء Date این کار شدنی است.
      همچنین می‌توانید تاریخ شمسی را با استفاده از دستور persian_to_jd که مثال آن در کامنت‌های قبلی موجود است، به فرمت JD تبدیل کنید و با محاسبه‌ی باقیمانده‌ی تقسیم JD بر ۷ به روز هفته برسید.

  91. علی می‌گوید:

    سلام
    اگر بخواهیم در بدو ورود به صفحه تقویم فعال و در حال نمایش باشد(و هرگز مخفی نشود) چه باید کرد ؟

  92. آریا رادمند می‌گوید:

    سلام،

    آقا با تشکر از به اشتراک گذاشتن اسکریپت خوبتون، جسارتا در تکه کد jQuery دوم persiancalendar باید با حرف c کوچک نوشته بشه با توجه به اینکه در تکه کد اول تابع با c کوچک تعریف شده.

    jQuery("#myDate").persiancalendar({
    	initialDate: '1392-10-20',
    	defaultDate: '1392-10-20'
    });
  93. سامان حقیقی می‌گوید:

    سلام و خسته نباشید

    آقای امیرمسعود جان می خواستم از زحمات شما بابت تهیه و انتشار این کار زیبا تشکر کنم و سلامتی و موفقیت هر روز شما را آرزومندم

    اراتمند سامان

  94. مرتضی می‌گوید:

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

  95. امیر می‌گوید:

    سلام

    آقا دستت درد نکنه.. خیلی عالی و زیبا هست.

    من توی یه پروژه ازش استفاده کردم و خیلی عالیه..

  96. امین می‌گوید:

    عذرخواهی میکنم که وقتتونو میگیریم
    یک سئوال دیگه دارم که اگر من خواسته باشم کاری کنم که تقویم زمانی بازشود که کاربر روی

    کلیک کند باید چیکار کنم ؟ ممنون
    یعنی همانند کلیک بر روی a.pcalBtn

    • امیرمسعود ایرانی می‌گوید:

      برای باز کردن تقویم، باید از متغیری که موقع ایجاد تقویم مشخص کردید، استفاده کنید
      مثلا:

      var a = new AMIB.persianCalendar( 'pcal1' );
      a.showHidePicker();
  97. سیامک می‌گوید:

    با سلام و تشکر فراوان از زحمات شما ، در تدوین چنین ابزاری
    می خواستم بدانم ساده ترین راه برای استفاده از چند یا چندین فقره از فیلد تاریخ مختلف در یک صفحه ، ترجیحا بدون jquery و با حداقل تغییر در کد اصلی چیست ؟ ( نتوانستم پاسخم را در میان پرسش و پاسخها بیابم )
    در پاسخ یکی از دوستان فرموده اید که نسخه جدید با خروجی و فرمت YYYY/MM/DD آماده آپلود است و مشکل کمبود فرصت است . آقا قربونت ، انتظار طولانی شده !

    • امیرمسعود ایرانی می‌گوید:

      با سلام

      در کامنت‌های بالا یکی از کاربران روشی برای ذخیره سازی تاریخ اصلی با فرمت دلخواه در فیلد اصلی معرفی کرده بودند
      با مشخص کردن فیلد اصلی هم به عنوان محل ورود محتوا و هم به عنوان فیلد اضافی می‌توانید به هدفتون برسید
      نگارش جدید تقویم آماده است ولی همچنان درگیر کارهای ناتمام هستم و فرصت نوشتن مستندات برای آن را نکرده‌ام
      به دلیل تغییرات بنیادین، استفاده کردن از این نگارش بدون مستندات هم تقریبا کار مشکلی است
      و یک دلیل دیگر هم اینکه نگارش جدید قرار است در دو نگارش استاندارد و حرفه‌ای منتشر شود که هنوز این تقسیم‌بندی هم انجام نشده است
      نوشتن یک تقویم که بدون مشکل روی مرورگرهای مختلف کار کند کار بسیار سختی است. با وجود گذشت چند سال از توسعه‌ی این تقویم هنوز هر از چندگاهی اشکال‌های جدید در آن پیدا و برطرف می‌شود.

      با تشکر

  98. مجتبی می‌گوید:

    سلام بر شما…
    از کار با ارزشتون قدر دانی میکنم…
    خیلی کار خوب و خوش دستی هست نسبت به سایر تقویم هایی که دیدم.
    پیمایش سال که داخلش گذاشتید شدیدا کارم رو راه انداخت.
    امیدوارم موفق باشید در تمامی مراحل زندگیتون…

  99. فرهاد احدی پور می‌گوید:

    فقط می تونم بگم دمت گرم

  100. امیر می‌گوید:

    با شکر فراوان. واقعا کارتون عالیه. ممنون که این تقویم رو در اختیار عموم قرار دادید

  101. کامران می‌گوید:

    واقعا ممنون هموطن عزیز

  102. مهدی می‌گوید:

    سلام.میخواستم بدونم چطور میشه بعضی از روزهای ماه رو مشخص کنیم و به تقویم بدبم تا به حالت غیر فعال در بیان

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      چنین امکانی در تقویم وجود ندارد
      برای انجام این کار اگر با جاوااسکریپت آشنایی کافی داشته باشید، باید کد فشرده نشده تقویم را برایتان ارسال کنم تا امکانات لازم را به آن اضافه کنید
      یا اگر روزهای مورد نظر قبل از تاریخ خاص یا بعد از تاریخ خاصی باشند، این امکان در نگارش حرفه‌ای تقویم که به صورت تجاری قابل تهیه است، موجود است
      لطفا برای ادامه گفتگو از ایمیل amibct در gmail استفاده کنید.
      با تشکر

  103. امیر قاضی زاده می‌گوید:

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

  104. رضا می‌گوید:

    سلام

    چجوری میشه تاریخ رو از آبجکت گرفت؟
    var t = new AMIB.persianCalendar(‘from_cal’)

    چه متدهایی از t رو باید صدا زد تا مثلا تاریخ رو بهمون برگردونه؟

    ممنون

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      برای خواندن مقدار تاریخ، از دستورات معمول جاوااسکریپت روی فیلد اصلی و فیلد کمکی استفاده کنید
      شیئ ایجاد شده در سازنده‌ی بالا تاریخ را در خود نگهداری نمی‌کند

  105. alireza می‌گوید:

    سلام
    اگر صفحه Scroll داشته باشه، تقویم جابجا نشون داده میشه (در جای اولیه قبل از Scroll کردن).
    لطفا راهنمایی کنید.
    تشکر

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      این اشکال در نگارش جدید تقویم برطرف شده است که به علت کمبود زمان برای نوشتن مستندات و اصلاحات نهایی هنوز منتشر نشده است
      امیدوارم در ابتدای سال آینده نسخه‌ی جدید قابل انتشار باشد
      در حال حاضر اگر با جاوااسکریپت آشنایی کافی داشته باشید، اعلام بفرمایید تا کدهای فشرده نشده نسخه‌ی فعلی را برای شما ارسال کنم تا مشکل را برطرف نمایید
      با سپاس

      • alireza می‌گوید:

        سلام
        تشکر از لطفتون، با جاوا اسکریت هم کم و بیش آشنایی دارم، ولی اگر فکر میکنید ظرف چند هفته آینده نسخه جدیدش آماده بشه، ترجیح میدم صبر کنم. کارهای دیگری هست که میشه در این مدت انجام داد

  106. م. ر. و. می‌گوید:

    سلام
    ممنون از تقویم خوبتون…
    آیا تقویمتون قابلیت load تاریخ میلادی رو هم داره؟ چگونه؟
    با تشکر

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      این نسخه از تقویم از تاریخ میلادی پشتیبانی نمی‌کند
      نگارش حرفه‌ای که به صورت تجاری قابل خریداری است، این امکان را در اختیار شما قرار می‌دهد که به انتخاب شما یا به انتخاب کاربر، تاریخ شمسی یا میلادی دریافت شود و شمسی یا میلادی به انتخاب شما به سرور ارسال گردد
      در صورت تمایل به کسب اطلاعات بیشتر، با ایمیل amibct در gmail مکاتبه بفرمایید

  107. ehsan می‌گوید:

    سلام
    اگه بخوام توی تقویم زیر هر روز مثلا یه قیمت هم نشون بدم چجوری میتونم اینکار رو انجام بدم؟

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      برای انجام این کار باید سورس تقویم را تغییر بدهید، در صورتی که مهارت کافی برای ویرایش کدهای جاوااسکریپت را دارید، لطفا از طریق ایمیل amibct در gmail برای بنده پیامی ارسال بفرمایید تا سورس فشرده نشده را برایتان بفرستم

  108. کریم می‌گوید:

    با سلام و تشکر از زحمات شما

    آیا می‌توان مقدار وارد شده در فیلد اصلی (تاریخ شمسی) توسط این اسکریپت ماه و روز را دو کاراکتری محاسبه کند.

    یعنی الان مثلا ۰۱۰۸ را به ۱۳۹۶/۸/۱ تبدیل می کند در حالی که ۱۳۹۶/۰۸/۰۱ مورد نظر من است.

    توضیحی داده بودید که شناسه‌ی فیلد اصلی را به عنوان فیلد کمکی می‌شود استفاده کرد. با این کار مقدار معادل میلادی در فیلد قرار می‌گیرد و نه شمسی.

    ظاهرا در فیلد کمکی معادل میلادی تاریخ شمسی وارد شده، قرار می گیرد، تصور من مقدار شمسی با هر فرمت دلخواه بود.

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      اگر فرمت فیلد اضافی شما میلادی باشد، با نگارش فعلی تقویم، نمی‌توانید این کار را انجام دهید.
      نگارش جدید و تجاری تقویم این امکان را دارا می‌باشد.
      اگر با کدنویسی جاوااسکریپت هم آشنایی داشته باشید، می‌توانم کد فشرده نشده تقویم را برایتان ارسال کنم تا امکان فوق را به آن بیفزایید.
      در صورت تمایل به استفاده از گزینه‌های فوق، لطفا با ایمیل بنده amibct در gmail مکاتبه بفرمایید.

      • کریم می‌گوید:

        با سلام مجدد

        منظورتان از اگر فرمت فیلد اضافی شما میلادی باشد، برایم روشن نیست. در مثال‌های شما YYYYMMDD فرمت فیلد اضافی است که قابل فهم است.
        حالا فرمت شمسی چه می‌تواند باشد؟

      • امیرمسعود ایرانی می‌گوید:

        با سلام
        لطفا راهنمای تقویم را با دقت مطالعه بفرمایید
        فرمت فیلد اختیاری توسط شما می‌تواند تعیین شود

پاسخ دادن به مجتهدی لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>