未返回switch语句中的jQuery keyup事件处理程序的结果

时间:2017-09-06 09:19:11

标签: javascript jquery event-handling switch-statement datejs

我在JavaScript中有一个switch语句,其中keyup事件处理程序不会将回调返回给我的变量(在这种情况下为var test)。

这是最后一例(110)无效。

这是代码。希望你能帮助我:

var getDateRange;

$(".nav-reports").append(
  '<div id="daterange-container">' +
  '<select id="daterange">' +
  '<option value="0">Choose duration:</option>' +
  '<option value="10">Today</option>' +
  '<option value="20">Yesterday</option>' +
  '<option value="30">This week</option>' +
  '<option value="40">Last week</option>' +
  '<option value="50">This month</option>' +
  '<option value="60">Last month</option>' +
  '<option value="70">This year</option>' +
  '<option value="80">Last year</option>' +
  '<option value="100">Everything</option>' +
  '<option value="110">Last x days</option>' +
  '</select>' +
  '</div>'
);

getDateRange = function () {
  var test;
  var dateString = "yyyy-MM-dd";
  var selectedOption = parseInt($('#daterange').change().val());
  $('.daterange-input').detach();
  switch (selectedOption) {
    case 10: // works
            break;
    case 20: // works
            break;
    case 30: // works
            break;
    case 40: // works
            break;
    case 50: // works
            break;
    case 60: // works
            break;
    case 70: // works
            break;
    case 80: // works
            break;
    case 100: // works
            break;
    case 110: // doesnt't work
            $('#daterange-container').append('<input class="daterange-input" type="text" maxlength="4">');
            $('.daterange-input').keyup(function () {
              test = '/' + Date.today().addDays(-parseInt($(this).val())).toString(dateString) + '/' + Date.today().toString(dateString);
            });
            break;
  }
  return test;
};

提前谢谢。

我在这里调用getDateRange函数:

$('.' + report.description).click(function () {
                    var dateRange = getDateRange();
// some more code not in relation
                })

1 个答案:

答案 0 :(得分:0)

呀。感谢@Bellian,我明白了。

在getDateRange之外定义测试并删除了返回测试语句。

现在我在分配var dateRange之前调用getDateRange。

以下是工作代码:

 var test;

    getDateRange = function () {
        var dateString = "yyyy-MM-dd";
        var selectedOption = parseInt($('#daterange').change().val());
        $('.daterange-input').detach();
        switch (selectedOption) {
            case 110:
                $('#daterange-container').append('<input class="daterange-input" type="text" maxlength="4">');
                $('.daterange-input').keyup(function () {
                    test = '/' + Date.today().addDays(-parseInt($(this).val())).toString(dateString) + '/' + Date.today().toString(dateString);
                });
                break;
        }
    };

然后:

$('.' + report.description).click(function () {
    getDateRange();
    var dateRange = test;
});

感谢@Bellian和其他所有人。