Jquery datepicker在下一个输入中只有1天可选择和复制日期x天

前端之家收集整理的这篇文章主要介绍了Jquery datepicker在下一个输入中只有1天可选择和复制日期x天前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图让 Jquery-UI datepicker每月只有1个可用日期,这是每个月的第1个,当选择所选日期X天时,应该复制到另一个文本输入字段.

此外,要添加的天数值会随着下拉列表中选择的内容而变化.

弄到目前为止我所拥有的:
http://jsfiddle.net/8y4Bf/

来自小提琴的代码

HTML

<div>
    <label>Select an Option:</label>
    <select id="select1">
        <option value="" disabled="disabled" selected="selected">Select an option</option>
        <option value="1">Option 1</option>
        <option value="2">Option 2</option>
    </select>
</div>
<br /><br />
<div>
    <label>Start Date:</label>
    <input type="text" id="startdate" />
    <br /><br />
    <label>End Date:</label>
    <input type="text" id="enddate" />
</div>

jQuery的

$('#select1').change(function() {


    $('#startdate,#enddate').val("");


    if ($('#select1').val() == '1') {


        $('#startdate').datepicker({
            showButtonPanel: true,closeText: 'Close',dateFormat: "mm/dd/yy",onSelect: function(selected) {
                if (this.id == 'startdate') {

                    // Parameters 1 day only & also copy result into enddate + 5 days
                }
            }
        });
    }

     else if ($('#select1').val() == '2') {


        $('#startdate').datepicker({
            showButtonPanel: true,onSelect: function(selected) {
                if (this.id == 'startdate') {

                   // Parameters 1 day only & also copy result into enddate + 7 days
                }
            }

            });

     }

});

我已经在http://jqueryui.com/datepicker/#min-max阅读了文档,但无法弄清楚如何才能使每个月的第1天可用.

我是否必须再次获取#startdate的值,添加日期然后将其粘贴到#enddate中或将该值保存在某处以便我可以从那里开始?

解决方法

经过测试和工作!

>我改变了你的jsfiddle的逻辑.
>只是要知道,为了实现您的需要,datepicker必须实现beforeShowDay函数来覆盖将在组件中显示的日期,然后必须将所选日期转换为Date对象类型以轻松添加5或7天(以正确的方式行事,例如,如果你想选择每个月的最后一天,可以是30或31加5或7天,如果你手动完成,你将获得36或38而不是其他月份还有许多其他可能性 – 但这不是你的情况,我只是在解释).
>我也改进了代码,看看:

现场演示:http://jsfiddle.net/oscarj24/q27EG/2/

jQuery代码

$(function() {

    var extraDays = 0;
    var comboBox = $('#select1');
    var txtStartDate = $('#startdate');
    var txtEndDate = $('#enddate');
    var inputs = txtStartDate.add(txtEndDate);

    comboBox.on('change',function() {

        inputs.val('');

        var val = $(this).val();
        if(val == 1) extraDays = 5;
        if(val == 2) extraDays = 7;

        txtStartDate.datepicker({
            showButtonPanel: true,dateFormat: 'mm/dd/yy',beforeShowDay: function(date) {

                /* Check for the first day */
                if (date.getDate() == 1) { return [true,'']; } 
                else { return [false,'','Unavailable']; }
            },onSelect: function(selected) {

                /* Add extra days to the date according to 'comboBox' selection */
                var endDate = new Date(selected);
                endDate.setDate(endDate.getDate() + extraDays);

                var m = pad(endDate.getMonth() + 1,2);
                var d = pad(endDate.getDate(),2);
                var y = endDate.getFullYear();
                var endDateStr = [m,d,y].join('/');

                txtEndDate.val(endDateStr);
            }
        });

    });

});

/* This function just adds a zero to get this format: "01,02,etc" in a number less than 10 */
function pad(number,length) {
    var str = '' + number;
    while (str.length < length) { str = '0' + str; }
    return str;
};
原文链接:https://www.f2er.com/jquery/177417.html

猜你在找的jQuery相关文章