Since Google Chrome v20 a new calendar has been added to date inputs. The issue with this is that I\'m using javascript to create my own calendar and I have an icon already
adding to @jfrej: (cannot comment at the moment)
To kill all effects chrome applies to the input You need to clear the "x" (clear) Button too. ::-webkit-clear-button
To prevent the showing of the default text. Which is not a placeholder or a value you can use ::-webkit-datetime-edit-fields-wrapper But be carefull, you cannot see the value anymore.
.unstyled::-webkit-clear-button {
display: none;
-webkit-appearance: none;
}
#dateInput:not([value])::-webkit-datetime-edit-fields-wrapper,
#dateInput[value=""]::-webkit-datetime-edit-fields-wrapper {
visibility: hidden;
}
http://fiddle.jshell.net/RgY3t/66/
input[type="date"] {
&::-webkit-inner-spin-button,
&::-webkit-calendar-picker-indicator {
-webkit-appearance: none;
position: absolute;
right: 0;
opacity: 0;
}
width: 100%;
}
Here, I have a fontawesome pseudo-icon(caret) at the far right. Therefore, i place the calendar icon in that position, whenever a user clicked on the caret it performs the function of the invisible calendar icon
As of this writing, webkit has introduced controls to handle this:
input[type="date"]::-webkit-calendar-picker-indicator{
/* Your CSS here */
}
input[type="date"]::-webkit-inner-spin-button {
/* Your CSS here */
}
So, for this particular issue, it would be:
input[type="date"]::-webkit-calendar-picker-indicator,
input[type="date"]::-webkit-inner-spin-button{
display: none;
}
As far as I know you can't disable it at the moment. There is a discussion going on here: https://plus.google.com/102860501900098846931/posts/hTcMLVNKnec
Perhaps they will add some -webkit
selectors to control the styling.
For now you might have to use <input type="text">
instead.
EDIT:
As per Jeremy's answer, it is now possible to remove the arrow and spin buttons. Details can be found on webkit.org: Styling Form Controls - WebKit
The CSS to hide the controls is:
<input type="date" class="unstyled" />
.unstyled::-webkit-inner-spin-button,
.unstyled::-webkit-calendar-picker-indicator {
display: none;
-webkit-appearance: none;
}
However, this will only hide and not disable the native calendar! - you can still activate the calendar by pressing Alt+Down Arrow (at least on Windows).
To disable, you need to add a little JavaScript as described on the above webkit.org page:
<input type="date" id="dateInput" class="unstyled" />
dateInput.addEventListener('keydown', function(event) {
if (event.keyIdentifier == "Down") {
event.preventDefault()
}
}, false);
You can see it working in this jsfiddle.
You can put it like this
input[type="date"]::-webkit-calendar-picker-indicator{
background-image: url(images/calendar-icon.png);
background-position: center;
background-size: 20px 20px;
background-repeat: no-repeat;
color: rgba(204,204,204,0);
}
by putting the color attribute into 0 opacity you will make the arrow disappear
I don't think can right now. They are working on a concept called Shadow DOM which will allow you to manipulate and style the default templates. I believe it is available in Chrome Canary so you can try using that.