16

I am using the jQuery UI's datepicker for date selections on my site. One of my users just upgraded to the newest version of Chrome, which has built-in native date picker for HTML5. The big problem as the two UIs overlap each other. The other problem is when the user submits a date, the date in database reverts to "0000-00-00" and is producing bad data.

If I remove the jQuery datepicker, most of the users not using the latest-greatest browsers will not have a popup date picker. And, those who have the newest browser will have two overlapping calendars which breaks the application. My question is how do I disable the newest browsers from displaying the built-in date function and just continue to use the jQuery Datepicker?

4 Answers 4

39

Use Modernizr or similar library to feature detect if the browser supports the input type=date, and then load the jQuery UI datepicker if if does not.

if (!Modernizr.inputtypes.date) {
    $('input[type=date]').datepicker();
}
Sign up to request clarification or add additional context in comments.

4 Comments

where do place the code above? Also, do I call the modernizr.js script in my header?
Yes, you need to reference the moderizr.js in your header with a script tag. And you would place the above code wherever you are currently calling the .datepicker() method. Posting your existing code would help.
This solution worked for me! Here are instructions for installing Modernizr: modernizr.com/docs/#installing
Also, if you run into a dependency error with your Modernizr custom build (such as this one - github.com/Modernizr/Modernizr/issues/849) do a Google search to see what other selections need to be included in your build. They say this should be fixed in v3.
2

Either switch from using input[type=date] to input[type=text] or use Modernizr to detect support for the native datepicker. I've wrote a post about the implications of both options here - http://tjvantoll.com/2012/06/30/creating-a-native-html5-datepicker-with-a-fallback-to-jquery-ui/.

Comments

0

Sometimes you cannot modify form types. For example, I'm using Symfony2 Bundle's FormType.

I had this problem using Genemu jQuery Datepicker, and I solved this problem adding a calendar image button and a litle of css code.

You can see final result in this link

Here you can read documentation for adding image icon: jQuery UI Datepicker

Then, I simple added a css like this (maybe style rules will be different for you):

form input[type=date] + img {
    position: relative;
    left: -25px;
}

Comments

0

Add novalidate attribute to your form to remove browser's build-in validation.

<form action="login.htm" novalidate>

See this link for more info.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.