Click here to Skip to main content
15,881,413 members
Articles / Web Development / HTML

Bootstrap Persian DateTimePicker

Rate me:
Please Sign up or sign in to vote.
4.96/5 (53 votes)
10 Oct 2015CPOL2 min read 368.4K   18.5K   20   112
MdPersianDateTime is a jQuery plugin to create Persian DateTimePicker with bootstrap popover

Image 1

This Article moved to https://github.com/Mds92/MD.BootstrapPersianDateTimePicker, to download new versions see that.

Introduction

If you are looking for a jquery plugin Persian DateTimePicker with bootstrap, MdPersianDateTime is that it.
This plugin use bootstrap popover to show Persian DateTimePicker. so it has flexibility of bootstrap's popover.

Features

  • Use both javascript code or html tag attributes to run.
  • Changing placement as bootstrap's popover
  • Use target selector to show DateTimePicker on an element and change another element value
  • Ability to switch between DateTimePicker and DatePicker, you can disable TimePicker
  • From date, To date filter.

Using the code

Installing this library by nuget:

Install-Package MD.BootstrapPersianDateTimePicker

At first add the references to your html file:
Order of tags are important

XML
<head>
	<meta charset="utf-8" />	
	<link rel="stylesheet" href="bootstrap.min.css" />
	<link rel="stylesheet" href="bootstrap-theme.min.css" />
	<link rel="stylesheet" href="jquery.Bootstrap-PersianDateTimePicker.css" />

    <script type="text/javascript" src="jquery-2.1.1.js"> </script>
    <script type="text/javascript" src="bootstrap.min.js"> </script>	
</head>
.
.
.
<body>

	<script src="calendar.js" type="text/javascript"></script>
    <script src="jquery.Bootstrap-PersianDateTimePicker.js" type="text/javascript"></script>
</body>

There are two approaches to use MdPersianDateTime

1. Use JavaScript and jQuery as another jQuery's plugins

You can use the folowing settings for this approach (you can omit them, so the plugin use the default values).

  • Placement string to determine popover placement.It's equals with bootstrap's popover placement. So it can be 'bottom', 'right', 'left', 'top'
  • Trigger string to determine the trigger of bootstrap popover to show DateTimePicker. like 'focus', 'click', 'mouseover', ...
  • EnableTimePicker boolean enables TimePicker on the html element's DateTimePicker. default is true
  • TargetSelector string determines the jQuery selector of the element to write the DateTime string into it.
  • GroupId string determines the group name in FromDate, ToDate filtering. you have to use this attribute if you wanna use the filter
  • ToDate boolean determines the html tags as ToDate filter.
  • FromDate boolean determines the html tags as FromDate filter

Sample :

 

JavaScript
<script type="text/javascript">
    $('#textBoxInputId').MdPersianDateTimePicker({
        Placement: 'bottom', // default is 'bottom'
        Trigger: 'focus', // default is 'focus',
	EnableTimePicker: true, // default is true,
	TargetSelector: '', // default is empty,
	GroupId: '', // default is empty,
	ToDate: false, // default is false,
	FromDate: false, // default is false,
    });
</script>

2. Use html tags attributes.

In this approach you can determine the settings with the following attributes:

data-DateTimePicker="true"
data-Placement="bottom"
data-Trigger="focus"
data-EnableTimePicker="true"
data-TargetSelector="#fromDate1"
data-GroupId="group1"
data-ToDate="true"
data-FromDate="true"

Sample :

HTML
<button class="btn btn-default" data-MdDateTimePicker="true" data-TargetSelector="#input1" data-EnableTimePicker="true" data-Placement="left" data-Trigger="click">انتخاب تاریخ</button>

Convert to .NET DateTime

If you gonna to parse the generated DateTime string with this DateTimePicker in .Net and convert it to DateTime you can use the following library easily.

Image 2 Persian Calendar(PersianDateTime) in C#

History

  • 30th December 2014: First Post
  • 31th December 2014: Year dropdown and month dropdown added. 
  • 4th January 2015: fix a bug in date range
  • 10th June 2015: fix a bug in displaying days
  • 22th June 2015: fix a bug in displaying days
  • 7th Septambar 2015: fix a bug in changing textbox event
  • 11th October 2015: fix some bug and adding some features and moved the source code to github

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Iran (Islamic Republic of) Iran (Islamic Republic of)
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
Questionاشکال در ذخیره کردن در SQL Pin
Member 1251426210-May-16 1:10
Member 1251426210-May-16 1:10 
AnswerRe: اشکال در ذخیره کردن در SQL Pin
Mohammad Dayyan10-May-16 19:41
Mohammad Dayyan10-May-16 19:41 
GeneralRe: اشکال در ذخیره کردن در SQL Pin
Member 1251426211-May-16 3:26
Member 1251426211-May-16 3:26 
GeneralRe: اشکال در ذخیره کردن در SQL Pin
Mohammad Dayyan13-May-16 17:13
Mohammad Dayyan13-May-16 17:13 
QuestionProblem With Bootstrap Modal Pin
Sina Soltani 665-May-16 1:38
Sina Soltani 665-May-16 1:38 
AnswerRe: Problem With Bootstrap Modal Pin
Mohammad Dayyan7-May-16 19:15
Mohammad Dayyan7-May-16 19:15 
QuestionProblem with jquery.Validation Pin
Sina Soltani 6616-Apr-16 21:47
Sina Soltani 6616-Apr-16 21:47 
AnswerRe: Problem with jquery.Validation Pin
Sina Soltani 6617-Apr-16 0:54
Sina Soltani 6617-Apr-16 0:54 
Well Well Well Wink | ;)

After some trying to debug the component code, finally I found the solution and error cause.

When you are using the jquery.Validation, it appends a value like "XXXXXX-error" at the end of the "aria-describedby" accessibility attribute and this is the error point !!!

On the component, you are trying to get "$popoverDescriber" by a jquery selector that find a Div with the "aria-describedby" accessibility attribute and you check this value with exact value of $wrapper.parents('.popover').attr('id') whereas jquery.Validation change it to for example "popover878654 StartDate-error" !!!!

So you can fix this bug with replacing your selector from :

var $popoverDescriber = $wrapper.length > 0 ? $('[aria-describedby="'+$wrapper.parents('.popover').attr('id') + '"]') : undefined;


to:

var $popoverDescriber = $wrapper.length > 0 ? $('[aria-describedby*="' + $wrapper.parents('.popover').attr('id') + '"]') : undefined;


Consider that I just change the "=" to "*=" Wink | ;)

Hope that it helps.
GeneralRe: Problem with jquery.Validation Pin
Mohammad Dayyan17-Apr-16 2:04
Mohammad Dayyan17-Apr-16 2:04 
AnswerRe: Problem with jquery.Validation Pin
Mohammad Dayyan17-Apr-16 1:48
Mohammad Dayyan17-Apr-16 1:48 
GeneralRe: Problem with jquery.Validation Pin
Sina Soltani 6617-Apr-16 20:43
Sina Soltani 6617-Apr-16 20:43 
GeneralRe: Problem with jquery.Validation Pin
Sayrena2-Jan-17 7:16
Sayrena2-Jan-17 7:16 
Questionزمانی که بر روی کنترل دیگری کلید کرده باشی.؟ Attribut اظافه شد Pin
mohsen_popo18-Mar-16 8:33
mohsen_popo18-Mar-16 8:33 
AnswerRe: زمانی که بر روی کنترل دیگری کلید کرده باشی.؟ Attribut اظافه شد Pin
Mohammad Dayyan19-Mar-16 22:23
Mohammad Dayyan19-Mar-16 22:23 
GeneralRe: زمانی که بر روی کنترل دیگری کلید کرده باشی.؟ Attribut اظافه شد Pin
mohsen_popo22-Mar-16 6:12
mohsen_popo22-Mar-16 6:12 
GeneralRe: زمانی که بر روی کنترل دیگری کلید کرده باشی.؟ Attribut اظافه شد Pin
Mohammad Dayyan22-Mar-16 19:09
Mohammad Dayyan22-Mar-16 19:09 
Questionگزارش مشکل Pin
ali ghiasi20-Feb-16 18:10
ali ghiasi20-Feb-16 18:10 
AnswerRe: گزارش مشکل Pin
Mohammad Dayyan20-Feb-16 23:24
Mohammad Dayyan20-Feb-16 23:24 
Questionگزارش مشکل Pin
ali ghiasi19-Feb-16 21:32
ali ghiasi19-Feb-16 21:32 
Questionchange calendar display format Pin
maryam.saboor4-Jan-16 20:27
professionalmaryam.saboor4-Jan-16 20:27 
AnswerRe: change calendar display format Pin
Mohammad Dayyan5-Jan-16 0:43
Mohammad Dayyan5-Jan-16 0:43 
Questionتغییر تم Pin
Member 1000240710-Sep-15 7:55
Member 1000240710-Sep-15 7:55 
AnswerRe: تغییر تم Pin
Mohammad Dayyan11-Sep-15 19:20
Mohammad Dayyan11-Sep-15 19:20 
GeneralRe: تغییر تم Pin
Member 1000240713-Sep-15 8:12
Member 1000240713-Sep-15 8:12 
Questionتغییر تم Pin
Member 1000240710-Sep-15 7:55
Member 1000240710-Sep-15 7:55 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.