【问题标题】:jQuery datepicker, using $(this) in defaultDatejQuery datepicker,在 defaultDate 中使用 $(this)
【发布时间】:2014-05-09 17:00:44
【问题描述】:

有一个带有“从”和“直到”日期的表单,每个日期、月和年框。 我想用所选日期(“从”或“直到”)的每个 d-m-y 值填充 datePicker。 这是脚本的样子:

$('.year').datepicker({
    inline: true,
    showOtherMonths: true,
    showOn: 'button',
    buttonText: '',
    defaultDate: new Date(
        parseInt($('input[name="ydate'+$(this).attr('name').replace(/.date/, '')+'"]').val())
        ,parseInt($('input[name="mdate'+$(this).attr('name').replace(/.date/, '')+'"]').val())-1
        , parseInt($('input[name="ddate'+$(this).attr('name').replace(/.date/, '')+'"]').val())
    ),
    changeYear: true,
    onClose: function(dateText,picker) {
        var prefix = $(this).attr('name').replace(/.date/, '');

        $('input[name="ddate'+prefix+'"]').val( dateText.split(/\//)[1] );
        $('input[name="mdate'+prefix+'"]').val( dateText.split(/\//)[0] );
        $('input[name="ydate'+prefix+'"]').val( dateText.split(/\//)[2] );

    }
});

onClose 事件可以很好地填充 d-m-y 输入字段,但 defaultDate 不会像这样工作。 有什么建议吗?

【问题讨论】:

    标签: jquery datepicker


    【解决方案1】:

    由于执行上下文没有改变,this 仍然是指初始化日期选择器的方法上下文。

    因此解决方案可能是使用.each() 遍历.year 元素集,现在在each 处理程序中this 将引用当前的.year 元素。

    $('.year').each(function () {
        var nm = $(this).attr('name').replace(/.date/, '');
        $(this).datepicker({
            inline: true,
            showOtherMonths: true,
            showOn: 'button',
            buttonText: '',
            defaultDate: new Date(
            parseInt($('input[name="ydate' + nm + '"]').val()), parseInt($('input[name="mdate' + nm + '"]').val()) - 1, parseInt($('input[name="ddate' + nm + '"]').val())),
            changeYear: true,
            onClose: function (dateText, picker) {
                var prefix = $(this).attr('name').replace(/.date/, '');
    
                $('input[name="ddate' + prefix + '"]').val(dateText.split(/\//)[1]);
                $('input[name="mdate' + prefix + '"]').val(dateText.split(/\//)[0]);
                $('input[name="ydate' + prefix + '"]').val(dateText.split(/\//)[2]);
    
            }
        });
    })
    

    【讨论】:

    • 非常感谢!我有点困惑为什么它在 onClose 事件中起作用。它现在可以工作了:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    相关资源
    最近更新 更多