1

我遇到了一个问题,我使用 jQuery UI 的 Datepicker 用已设置的日期填充几个字段。

基本上我想做的是在选择日期之后,更新一个文本字段以显示该日期的日期(这应该是它应该的工作,我相信无论如何),然后也用选择的日期更新一个 div(这只是为了测试目的,我将来还有很多事情要做,但在我得到这个排序之前不能这样做)。但由于某种原因,它不会自动更新。我需要把它放在点击函数中来刷新数据吗?

继承人的代码:

HTML:

<div id="widgetContainer">Date:
    <input type="text" id="datepicker" />
    <br />
    <input type="text" id="selected_day" size="30" value="" />
    <br />
    <select name="times">
        <option value="12pm" selected="selected">12pm</option>
        <option value="1pm">1pm</option>
        <option value="2pm">2pm</option>
        <option value="3pm">3pm</option>
        <option value="4pm">4pm</option>
        <option value="5pm">5pm</option>
        <option value="6pm">6pm</option>
        <option value="7pm">7pm</option>
        <option value="8pm">8pm</option>
        <option value="9pm">9pm</option>
        <option value="10pm">10pm</option>
        <option value="11pm">11pm</option>
    </select>
    <div id="result">Result:</div>
</div>

jQuery:

$(document).ready(function () {
    $(function () {
        $("#datepicker").datepicker({
            altField: "#selected_day",
            altFormat: "DD"
        });
        $('#selected_day').change(function () {
            var day = this.val();
            $('#result').text('Result:' + day);
        });
    });
});

和一个小提琴 - http://jsfiddle.net/andyjh07/c3u5B/

谢谢!

4

2 回答 2

2

当您使用 script 更新 input 的值时,不会触发 change 事件,因此您需要自己触发它。您可以使用 datepicker 中的事件来管理它:

 $("#datepicker").datepicker({
        altField: "#selected_day",
        altFormat: "DD",
        onSelect:function(){
            $('#selected_day').change()
        }
    });

演示:http: //jsfiddle.net/c3u5B/12/

不确定您是否真的需要 alt 字段上的更改处理程序,并且可以从 datepicker 中进行更新

于 2013-04-04T09:29:09.140 回答
1

change事件未触发的原因selected_day是该值以编程方式更改。

您需要在元素本身上触发change事件,如下所示:datepicker

$("#datepicker").datepicker({
  altField: "#selected_day",
  altFormat: "DD"
}).on('change', function() {
  var day = $('#selected_day').val();
  $('#result').text('Result: ' + day);
});

这是一个小提琴

于 2013-04-04T09:26:39.980 回答