为什么构建JQuery UI Datepicker会清除字段的值?

时间:2012-05-06 06:07:38

标签: jquery jquery-ui jquery-ui-datepicker

我有一个INPUT标签,其value属性设置为“15-May-2012”,我已经用它初始化了一个JQuery UI Datepicker,如下所示:

<input type="text" name="schedule" id="schedule"
      value="15-May-2012">

<script type="text/javascript">
  $(function() {
    $( "#schedule" ).datepicker();
    $( "#schedule" ).datepicker( "option", "dateFormat", "d-M-yy" );
  });
</script>

由于某种原因,一旦初始化Datepicker,就会清除INPUT标记的值。请注意,INPUT字段中的值与Datepicker设置的格式匹配。

为什么价值被清除?

以下是它的实例:http://agnelkurian.com/lab/datepicker_example.html

3 个答案:

答案 0 :(得分:12)

绑定datepicker时:

$('#schedule').datepicker();

它将使用默认dateFormat,即"mm/dd/yy";您的"15-May-2012"与该格式不匹配,因此当使用"mm/dd/yy"无法解析时,datepicker会将其清除。然后你改变格式:

$("#schedule").datepicker("option", "dateFormat", "d-M-yy");

value已经丢失。

绑定datepicker时应设置格式:

$("#schedule").datepicker({
    dateFormat: 'd-M-yy'
});

演示:http://jsfiddle.net/ambiguous/mHyn7/

答案 1 :(得分:2)

实际有效的简单解决方案:

var tmp = $('#schedule').val();
$("#schedule").datepicker("option", "dateFormat", "d-M-yy");
$("#schedule").val(tmp);

答案 2 :(得分:-1)

    $( "#schedule" ).datepicker();
$( "#schedule" ).datepicker( "option", "dateFormat", 'd-M-yy' );
$( "#schedule" ).val("15-May-2012");