【问题标题】:jQuery UI datepicker: getDate to prepend the selected date?jQuery UI datepicker:getDate 预先选择日期?
【发布时间】:2010-11-15 21:55:17
【问题描述】:

我有我的 UI 日期选择器,并尝试使用 onSelect 在#viewCalender 中添加您选择的日期:

        $(function() {
    $('#rangeA').daterangepicker({
        arrows: true, 
        onClose: function(event) {
            $('#calenderView').prepend('Ok!');
        },
        onSelect:
         function(){
            var day1 = $("#rangeA").datepicker('getDate').getDate();                  
            var month1 = $("#rangeA").datepicker('getDate').getMonth() + 1;             
            var year1 = $("#rangeA").datepicker('getDate').getFullYear();
            var fullDate = year1 + "-" + month1 + "-" + day1;
             $('#calenderView').prepend(fullDate);
            }
    });
});

但是当我选择一个日期时没有任何反应。这里有什么问题?

    onClose:
     function(){

        var date = $(".range-start").datepicker('getDate');
        var dateEnd = $(".range-end").datepicker('getDate');
        if(date != null){
            if(dateEnd != null){
            var day2 = dateEnd.getDate();
            var month2 = dateEnd.getDate();
            var year2 = dateEnd.getDate();
            var fullDate2 = year2 + "-" + month2 + "-" + day2;
            }else{
            var fullDate2 = 0;
            }
        var day1 = date.getDate();                  
        var month1 = date.getMonth() + 1;             
        var year1 = date.getFullYear();
        var fullDate = year1 + "-" + month1 + "-" + day1;
        $.ajax({
        url: "misc/getCalender.php",
        type: "POST",
        data: { dateStart: fullDate, dateEnd: fullDate2 },
        success: function(response){
        alert('passed: ' + fullDate + ' - '+ fullDate2);
            }
        });
    }
    }

【问题讨论】:

    标签: jquery jquery-ui jquery-plugins jquery-ui-datepicker


    【解决方案1】:

    而不是onSelectthe event is onChange,只需更改您的代码以使用该选项,您就应该准备就绪。此外,日期并未存储在 #rangeA 中,而是它创建的另一组输入,分别为 .range-start.range-end(是的……您目前在一个页面上不能有多个)。

    You can test it here,请注意onChange 也会在每次选择时触发两次...当您使用结果替换值而不是预先添加它(导致多个预先添加)时,这应该不是问题。

    【讨论】:

    • 我没有使用 onChange,正是因为它每次选择都会触发两次。因此,我想使用 onClose,并检查日期是否在 date.getDate() 中,如果有,则添加 getdate(在 ajax 请求中传递日期)..
    • @Johnson - 你根本不能使用onSelect,这不是你可以覆盖的选项,你可以在这里测试它:jsfiddle.net/nick_craver/P3qw3/2
    • @NickCraver 如果我想在 ajax 请求 onChange 中传递日期,那么它会像这样传递:2010-11-162010-11-16(你可能知道的两倍)如果我选择最佳选项之一(今天、7 天前、上个月)?那我该如何解决呢?
    • @Johnson - 你为什么要添加它?为什么不直接设置值呢?
    • @NickCraver 因为我想知道我要设置到将要传递的变量中的内容
    【解决方案2】:

    使用http://www.filamentgroup.com/lab/date_range_picker_using_jquery_ui_16_and_jquery_ui_css_framework/ 作为该插件的文档,我看不到onSelect 有任何用途,除了在cmets 中。看起来你应该把它放在OnClose函数中的那个on选择代码,它在选择日期时会被解雇。

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 2018-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多