jQuery - Datepicker - defaultDate的值有问题

时间:2012-08-23 10:22:00

标签: jquery datepicker

我正在试图找出为什么会出现defaultDate问题,但我被卡住了。

我有这个例子:

<tr>
    <td><input type="text" value="12/03/2012" id="8798044_date"></td>
    <td><font class="red">-39 999,60 €</font></td>
    <td>
        <input type="text" id="8798044" class="date_twr">
    </td>
</tr>

以下是可以使用的JS代码:

jQuery('.date_twr').datepicker({
    'changeMonth':true,
    'changeYear':true,
    'dateFormat': 'dd/mm/yy',
    'defaultDate': jQuery('#8798044_date').val()
});
问题是我不想使用id,它放在我的测试中。 我宁愿用“操纵”来搜索

jQuery('.date_twr').datepicker({
    'changeMonth':true,
    'changeYear':true,
    'dateFormat': 'dd/mm/yy',
    'defaultDate': jQuery(this).parent().prev().prev().find('input').val()
});

使用此课程的点击,我知道我想要的值是正确的:

jQuery('.date_twr').click({
    console.log(jQuery(this).parent().prev().prev().find('input').val())
});

但是搜索默认处理不起作用。 我搜索了一下,但我不明白为什么它不起作用。 我想datepicker元素是一个特殊的行为,突然jQuery(this)不是预期的。

欢迎提供一点帮助:)

提前谢谢

PS:我使用jQuery()而不是$(),因为我正在研究的网站上有几个JS库。

1 个答案:

答案 0 :(得分:0)

你是对的,在datepicker的上下文中,jQuery(this)引用了文档根。这表明HTML是它的孩子。

jQuery('.date_twr').datepicker({
    'appendText': jQuery(this).children().first().prop('tagName')
});

奇怪的是,在每个循环中执行它似乎都有效

jQuery('.date_twr').each(function() {
    jQuery(this).datepicker({
        'changeMonth':true,
        'changeYear':true,
        'dateFormat': 'dd/mm/yy',
        'defaultDate': jQuery(this).parent().prev().prev().find('input').val()
    });
});

编辑:这会提取正确的值,但是datepicker似乎错误地解析了它们,你会得到一些奇怪的结果。这会强制以正确的格式解析日期并将日期对象传递给日期选择器:

jQuery('.date_twr').each(function() {
    var dt = jQuery.datepicker.parseDate('dd/mm/yy', jQuery(this).parent().prev().prev().find('input').val());
    jQuery(this).datepicker({
        'changeMonth': true,
        'changeYear': true,
        'dateFormat': 'dd/mm/yy',
        'defaultDate': dt
    });
});