0

我试图找出为什么 defaultDate 问题,但我被困住了。

我有这个例如:

<tr>
    <td><input type="text" value="12/03/2012" id="8798044_date"></td>
    <td><font class="red">-39 999,60 €&lt;/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 库。

4

1 回答 1

0

你是对的,在日期选择器的上下文中,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
    });
});
于 2012-08-23T12:34:00.383 回答