【问题标题】:jQuery datepicker does not update value properlyjQuery datepicker 没有正确更新值
【发布时间】:2014-11-28 12:31:08
【问题描述】:

在我目前正在工作的网站上,我有一个添加事件的表单。此事件需要用户使用 jQuery 日期选择器选择的日期。一个日期只能有一个事件。所以我想检查用户在日期选择器中插入的日期。我尝试通过在用户选择日期后获取值来做到这一点。然而问题是,日期选择器不会立即更新他的值。

我制作了一个 JSFiddle 来显示问题。当您选择一个日期时,跨度会更新并显示日期选择器的值。但正如您第一次看到的那样,它是空白的,第二次显示的是之前选择的日期。所以日期选择器不会立即更新是有价值的。我怎样才能解决这个问题?

我在 stackoverflow 上查看了其他类似的问题,但他们的解决方案对我不起作用。

JSFiddle: http://jsfiddle.net/kmsfpgdk/

HTML:

<input type="text" id="datepicker" name="date" />
<span id="data"></span>

JS:

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

$('#datepicker').blur(function () {
    var val = $(this).val();
    $('#data').text(val);
});

【问题讨论】:

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


    【解决方案1】:

    最好使用内置方法onSelect:fn来使用:

    $('#datepicker').datepicker({
       onSelect: function () {
           $('#data').text(this.value);
       }
    });
    

    Fiddle


    根据文档:

    onSelect

    选择日期选择器时调用。该函数接收选定的日期作为文本和 datepicker 实例作为参数。 this 指的是关联的输入字段。

    【讨论】:

    • 这个版本的问题是它不能手动输入数据。如果用户在没有触摸日期选择器的情况下点击或点击离开,则不会触发更新功能。
    【解决方案2】:

    change 事件发生在 blur 事件之前。

    使用.change() 代替.blur()

    $('#datepicker').change(function() {
        var val = $(this).val();
        $('#data').text(val);
    });
    

    Updated jsFiddle Demo

    【讨论】:

      【解决方案3】:

      如果 Google 将您带到这里是因为您的输入似乎没有响应各种 JQuery .on( 事件,很可能是因为您在同一页面上有另一个元素具有相同的 id。

      【讨论】:

        猜你喜欢
        • 2019-01-14
        • 1970-01-01
        • 1970-01-01
        • 2019-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-31
        • 1970-01-01
        相关资源
        最近更新 更多