Neon
Neon

Reputation: 186

HTML5 Date Input Type Interfering with jQuery Datepicker

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?

Upvotes: 16

Views: 15799

Answers (4)

MaxZoom
MaxZoom

Reputation: 7753

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

<form action="login.htm" novalidate>

See this link for more info.

Upvotes: 0

edrian
edrian

Reputation: 4531

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;
}

Upvotes: 0

TJ VanToll
TJ VanToll

Reputation: 12704

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/.

Upvotes: 2

jmoerdyk
jmoerdyk

Reputation: 5517

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();
}

Upvotes: 39

Related Questions