2012-10-12 39 views
6

Me sorprendió gratamente al descubrir que el siguiente código, cuando se ve en Chrome, rinde un selector de fechas:¿Cómo se cambia el texto del marcador de posición HTML 5 que aparece en el campo de la fecha en Chrome

<input type="date" name="wdate" id="wdate" value="" placeholder="date of purchase" /> 

Sin embargo, el texto del marcador se ignora y se muestra "Fecha/Mes/Año" en su lugar.

¿Cómo puedo cambiar el texto del marcador de posición y usar el mío?

Ya he probado:

<script> 
    $("#wdate").attr("placeholder", "Day/Month/Year of purchase"); 
</script> 

pero fue en vano.

+0

marcador de posición se mostrará sólo si el cuadro de texto está vacío, de lo contrario no podemos cambiarlo. – vusan

+4

El atributo marcador de posición se supone que es una pista sobre cómo completar el formulario (es decir, un ejemplo o una descripción del formato), es explícitamente ** no ** un reemplazo para un elemento 'etiqueta '. Coloque una 'etiqueta' al lado del campo. – Quentin

+1

El campo está vacío. Muestra este texto exacto inmediatamente cuando la página carga "Día/Mes/Año" exactamente como lo acabo de escribir (pero sin las comillas). –

Respuesta

1

pregunta antiguo, pero aquí está la solución recientemente he tenido que usar.

No podrá usar el campo de fecha HTML5, pero esto se puede hacer con jQuery UI datepicker. http://jsfiddle.net/egeis/3ow88r6u/

var $datePicker = $(".datepicker"); 
 

 
// We don't want the val method to include placehoder value, so removing it here. 
 
var $valFn = $.fn.val; 
 
$.fn.extend({ 
 
    val: function() { 
 
     var valCatch = $valFn.apply(this, arguments); 
 
     var placeholder = $(this).attr("placeholder"); 
 
     
 
     // To check this val is called to set value and the val is for datePicker element 
 
     if (!arguments.length && this.hasClass('hasDatepicker')) { 
 
      if (valCatch.indexOf(placeholder) != -1) { 
 
       return valCatch.replace(placeholder, ""); 
 
      } 
 
     } 
 
     return valCatch; 
 
    } 
 
}); 
 

 
// Insert placeholder as prefix in the value, when user makes a change. 
 
$datePicker.datepicker({ 
 
    onSelect: function(arg) { 
 
     $(this).val($(this).attr("placeholder") + arg); 
 
    } 
 
}); 
 

 
// Display value of datepicker 
 
$("#Button1").click(function() { 
 
    alert('call val(): {' + $datePicker.val() + '}'); 
 
}); 
 

 
// Submit 
 
$('form').on('submit', function() { 
 
    $datePicker.val($datePicker.val()); 
 
    alert('value on submit: {' + $datePicker[0].value + '}'); 
 
    return false; 
 
});
.ui-datepicker { width:210px !important; }
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/themes/blitzer/jquery-ui.css" rel="stylesheet"/> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> 
 
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script> 
 
<form method="post"> 
 
    <p>HTML5 Date: <input type="date" placeholder="html5 date:" /></p> 
 
    <p>jQuery DatePicker: <input type="text" class="datepicker" placeholder="Start date:" /></p> 
 
    <p><input id="Button1" type="button" value="Get DatePicker Value" title="Get DatePicker Value" /></p> 
 
    <p><input type="submit" text="fire submit" /></p> 
 
    <p>Original Source for this <a target="_blank" href="http://jqfaq.com/how-to-add-some-custom-text-to-the-datepickers-text-field/">JQFaq Question</a></p> 
 
</form>

Cuestiones relacionadas