在javascript ui datepicker中使用另一个函数的变量

时间:2018-05-26 05:31:17

标签: javascript

我根据选择计算日期,然后我将此计算日期存储在exp_dt变量上。此日期计算在change函数下。我想要实现的是我在exp_dt函数中将UI Datepicker称为maxDate,但我收到exp_dt is not defined的错误。有什么办法可以在exp_dt函数中使用UI Datepicker吗?

我的代码到目前为止:

$('#date').change(function() {
    var dep_dt = $(this).val();
    $('#eff').val(dep_dt);
    var eff_dt = new Date(dep_dt);
    eff_dt.setDate(eff_dt.getDate() + 364); 
    var month = "0"+(eff_dt.getMonth()+1);
    var date = "0"+eff_dt.getDate();
    month = month.slice(-2);
    date = date.slice(-2);
    var exp_dt = month +"/"+date +"/"+eff_dt.getFullYear();
});

var dateToday = new Date();
$( function() {
$("#date").datepicker({
    changeMonth: true,
    changeYear: true,
    yearRange: "-100:+0",
    minDate: dateToday
    });
$("#eff").datepicker({
    changeMonth: true,
    changeYear: true,
    yearRange: "-100:+0",
    minDate: dateToday
    });
$("#exp").datepicker({
    changeMonth: true,
    changeYear: true,
    yearRange: "-100:+0",
    minDate: dateToday
    });
}); 

我正在尝试exp_dt $("#exp").datepicker({ });中的maxDate访问<input type="text" id="date"> <input type="text" id="eff"> <input type="text" id="exp">

setTimeout( ... )
 setTimeout( ... )
 setTimeout( ... )

2 个答案:

答案 0 :(得分:0)

添加第11行以设置datepicker的maxDate值;

$('#date').change(function() {
        var dep_dt = $(this).val();
        $('#eff').val(dep_dt);
        var eff_dt = new Date(dep_dt);
        eff_dt.setDate(eff_dt.getDate() + 364); 
        var exp_dt = eff_dt;
        $( "#exp" ).datepicker( "option", { maxDate: exp_dt } );
    });

    var dateToday = new Date();
    $( function() {
    $("#date").datepicker({
        changeMonth: true,
        changeYear: true,
        yearRange: "-100:+0",
        minDate: dateToday
        });
    $("#eff").datepicker({
        changeMonth: true,
        changeYear: true,
        yearRange: "-100:+0",
        minDate: dateToday
        });
    $("#exp").datepicker({
        changeMonth: true,
        changeYear: true,
        minDate: dateToday
        });
    }); 

答案 1 :(得分:0)

您无法在另一个函数中访问函数的局部变量。 exp_dt是change事件中函数的局部变量。使其成为全局变量将修复错误。

var exp_dt = '';

$('#date').change(function() {
    var dep_dt = $(this).val();
    $('#eff').val(dep_dt);
    var eff_dt = new Date(dep_dt);
    eff_dt.setDate(eff_dt.getDate() + 364); 
    var month = "0"+(eff_dt.getMonth()+1);
    var date = "0"+eff_dt.getDate();
    month = month.slice(-2);
    date = date.slice(-2);
    exp_dt = month +"/"+date +"/"+eff_dt.getFullYear();
});