4

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

<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 事件有效,但如果没有选择第一个日期,我不想打开另一个日期......

请从小提琴尝试:http: //jsfiddle.net/Ld98p/1/

4

2 回答 2

4

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

看起来onSelect回调是在非常复杂的情况下调用的,事件方面的,并且focus不能依赖从回调本身触发或强制显示弹出窗口。

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

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

您可以在更新的 fiddle中对其进行测试。

于 2012-11-04T12:25:50.953 回答
0

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

$("input.date").datepicker({
    onSelect: function() {
        window.setTimeout($.proxy(function() {
            $('.date').datepicker('show');
        }, this), 10);
    }
});
于 2017-08-31T19:12:47.570 回答