为什么jQuery Datepicker选择今天输入数字并按下输入的日期?

时间:2014-01-31 06:48:22

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

我在我正在研究的应用程序中发现了一个在jQuery网站上复制的场景。例如,如果您转到here并输入一个整数字符串(例如“12345678”)并按Enter键,您将看到当前日期填充输入。如果您再重新键入另一个数字字符串并再次按Enter键,则键入的字符串仍然存在。

在我的应用程序中,我需要在输入任何按键后输入任何数字。我的问题是:

  1. 为什么字符串会被初始输入键按下事件上的日期覆盖?
  2. 如何防止这种行为?

1 个答案:

答案 0 :(得分:2)

Enter键将始终获取所选日期并将此值输出到文本框。此选定日期将是打开时的默认日期。您可以在打开日期选择器时设置defaultDate,但它可以是有效日期或今天的日期。目前无法打开没有默认日期的日期选择器。

通常,您可以通过将其设置为空来删除所选日期。

$('#mydate').datepicker('setDate', null);

但是,当最初打开日期选择器时,这不会起作用,因为它始终以默认/选定日期打开。

我提出a fiddle showing a possible work around

/***
    Since there is ALWAYS a default date in the datepicker when it's opened,
    then let's try and trigger an event after it has been opened, then set the
    date to null.
***/
$('#textbox').datepicker(
{
    beforeShow: function() 
    {
        $(this).trigger('afterShow');        
    }
})
.bind('afterShow', function()
{
    var $this = $(this);
    setTimeout(function()
    {
      $this.datepicker('setDate', null);  
    }, 100); 
});