【问题标题】:Jquery UI datepicker closes on next().focus()Jquery UI datepicker 在 next().focus() 上关闭
【发布时间】:2012-11-04 12:01:14
【问题描述】:

我需要从日期选择器小部件中选择随后的两个日期,然后我想在选择第一个日期时关注第二个日期。 我是这样设置的:

<input type="text" class="date" id="fromDate" name="fromDate"/>
<input type="text" class="date" id="toDate" name="toDate"/>

$("input.date").datepicker({
    onSelect: function(){
        $(this).next(".date").focus();
    }
});

但是当我选择第一个日期时,第二个日期打开然后关闭窗口......为什么?

我看到 onClose 事件有效,但如果没有选择第一个日期,我不想打开另一个日期...

请从 fiddle 试试看:http://jsfiddle.net/Ld98p/1/

【问题讨论】:

    标签: jquery-ui datepicker


    【解决方案1】:

    这很有趣。即使调用 datepicker 小部件的 show() 方法也会导致相同的行为。

    看起来onSelect 回调是在相当复杂的情况下调用的,事件方面,触发focus 或从回调本身强制显示弹出窗口是不可靠的。

    但是,从稍微延迟的函数触发 focus 似乎可以工作:

    $("input.date").datepicker({
        onSelect: function() {
            window.setTimeout($.proxy(function() {
                $(this).next(".date").focus();
            }, this), 10);
        }
    });
    

    你可以在your updated fiddle进行测试。

    【讨论】:

    • 这行得通...但是使用计时器打开 datepiker 有点奇怪:-)
    • 感谢您的解决方案。虽然代码不是很干净,但它可以工作。我们应该看看 jQuery UI 的人对此是怎么说的。
    【解决方案2】:

    接受的答案对我不起作用,但以下变体确实有效:

    $("input.date").datepicker({
        onSelect: function() {
            window.setTimeout($.proxy(function() {
                $('.date').datepicker('show');
            }, this), 10);
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多