0

感谢 techfoobar,我有一个带有同步输入字段和选择列表的日期选择器。

但是,当我将日期格式更改为“yy-mm-dd”时,它停止工作。选择列表中的更改会触发输入中的更改,但单击日期选择器不会更新选择列表。

这是脚本:

$(function() {
        $('#selectedDatepicker').datepicker({
        dateFormat: "yy-mm-dd",
    beforeShow: readSelected, onSelect: updateSelected,
    minDate: new Date(2013, 1 - 1, 1), maxDate: new Date(2013, 06 - 1, 31),
    numberOfMonths: 3,
    showButtonPanel: true,
    showOn: 'both', buttonImageOnly: true, buttonImage: 'http://jqueryui.com/resources/demos/datepicker/images/calendar.gif'});

// Prepare to show a date picker linked to three select controls
function readSelected() {
    $('#selectedDatepicker').val($('#selectYear').val() + '-' +
        $('#selectDay').val());
    return {};
}

// Update three select controls to match a date picker selection
function updateSelected() {
    var date1 = $(this).val();

    console.log(date1.substring(3, 5));
    console.log(date1.substring(6, 10));

    $('#selectDay').val(date1.substring(3, 5));
    $('#selectYear').val(date1.substring(6, 10));
}

    $('select').change(readSelected);

    });

这是 HTML 代码:

<select id="selectDay">
<option value="01">1</option>
<option value="02">2</option>
<option value="03">3</option>
<option value="04">4</option>
...
</select>
<select id="selectYear">
<option value="2013-01">January 2013</option>
<option value="2013-02">February 2013</option>
<option value="2013-03">March 2013</option>
<option value="2013-04">April 2013</option>
<option value="2013-05">May 2013</option>
<option value="2013-06">June 2013</option>
</select>
<p>Date: <input type="text" id="selectedDatepicker" /></p>

你可以在这里检查小提琴:

http://jsfiddle.net/xKXZm/8/

这个问题从何而来?这两个字段具有相同的格式集。

4

1 回答 1

1

您尝试在 select 元素中选择的值不存在,因为子字符串产生的值与原来不同。你需要相应地调整你的substr

function updateSelected() {
    var date1 = $(this).val();

    console.log(date1.substring(8));
    console.log(date1.substring(0, 4));

    $('#selectDay').val(date1.substring(8));
    $('#selectYear').val(date1.substring(0, 7));
}

jsfiddle

于 2012-10-27T11:42:49.140 回答