4

I know that the html date input field defaults to "mm/dd/yyyy", but was wondering if there was a way to overwrite that with text to say something like "pick a date".

I have tried changing the value and placeholder attributes like so:

<input type="date" placeholder="Pick a Date">
<input type="date" value="Pick a Date">

but it ultimately doesn't seem to work as I assume it's expecting some sort of ISO date. Any ideas?

Example in a fiddle: http://jsfiddle.net/AY2mp/

4 Answers 4

1

An alternative is to use the jQuery date selector that uses an input field instead of date field so that the value and placeholder attributes can be used:

http://jqueryui.com/datepicker/

html

<input type="text" id="datepicker" value="The Date">

js

$(function() {
   $( "#datepicker" ).datepicker();
});
Sign up to request clarification or add additional context in comments.

Comments

1

I believe you could do it like this. I am no javascript guru so there may be a more efficient way to do it, but it gets the job done.

Of course you will need to change the selectors.

Fiddle: http://jsfiddle.net/ce2P7/

HTML

<div class="date1">
<input type="text" placeholder="Please choose a date" value="">
</div>
<div class="date2">
<input class="date" type="date" value="">
</div>

CSS

.date1 {
width: 150px; /* For consistency */
}
.date2 {
width: 150px; /* For consistency */
display: none;
}

JAVASCRIPT

<script>
$(function(){
  $("input").one("click", function () {
  $(".date1").hide();
  $(".date2").show();
  });
});
</script>

EDIT: I had to change things a bit, realized it wasn't working properly

Comments

0

The date type doesn't support placeholder attribute. Also, the WebKit implementation says it's fixed.

related answer: https://stackoverflow.com/a/12869288/3625883

you should use a label instead. (simple jsfiddle example: http://jsfiddle.net/7L4tb/ )

<label for="test">Test Date :</label>
<input id="test" type="date" value="2014-07-14" />

4 Comments

I need the field itself to be changed, not the label around it.
It can't be changed with placeholder attribute, give a look to the list I posted.
I know that, the question I'm asking is if there is a way to not have the value in a "yyyy-mm-dd" format.
Unfortunately it's not possible, see this related question: stackoverflow.com/questions/7372038/…
0

Placeholder isn't supported. Value should be in RFC3339 format yyyy-mm-dd.

For full details, see http://www.w3.org/TR/html-markup/input.date.html

Edit now that I read the question correctly...

No, the field must contain a well formatted date. It cannot contain text. Either use a text field and add something like jQuery UI's DatePicker, or use some awful jQuery hackery with absolutely positioned div's covering the datefields - if yuo absolutely must use a date field.

$(document).ready(function () {
var i = 0;

$('input[type="date"]').each(function () {
    var dfEl = $(this);
    var str = '<div class="datePlaceholder" id="divph' + i + '">Choose a date</div>';
    dfEl.after(str);
    var phEl = $('#divph' + i);

    var dateFieldPos = dfEl.offset();
    phEl.css({
        top: dateFieldPos.top + 1,
        left: dateFieldPos.left + 1,
        width: $(this).width() + 1,
        height: $(this).height() + 1
    });

    phEl.click(function () {
        $(this).hide();
        dfEl.focus();
    });

    dfEl.blur(function () {
        if (!dfEl.val()) {
            phEl.show();
        }
    });
    i++;
});
});    

http://jsfiddle.net/daveSalomon/AY2mp/1/

2 Comments

I know that, I am trying to figure out if there is a workaround to changing the input value.
@hannah Apolgies, I misread the question. Updated my answer. Short = No, long = yes with hackery. Don't do this. Use a textfield and a datepicker control. My 2 pence...

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.