代码之家  ›  专栏  ›  技术社区  ›  Gnuffo1

jQueryUIDatePicker-在日历下面添加静态文本?

  •  2
  • Gnuffo1  · 技术社区  · 16 年前

    这是在您单击链接的输入元素时弹出的。我希望能够在日期表下面插入一些静态文本,即使用户滚动到不同的月份,这些文本也会显示和保留。

    我设法通过jQuery,使用

    $('.ui-datepicker').after('text');
    

    .ui-datepicker 班级。问题是,当用户滚动到下个月时,它不起作用。我也设法解决了这个问题,通过不断地清除和重新添加文本 setTimeout

    下一个问题是我在页面上有多个日历,每个日历都有不同的文本。我试着针对 .ui日期选择器 使用上述方法,但我发现实际上只有一个datepicker实例在页面上的所有日历字段之间共享。

    那么这真的有可能吗?

    2 回复  |  直到 10 年前
        1
  •  1
  •   Glorfindel Doug L.    7 年前

    在同一页面上显示多个日期选择器上不同文本的一个解决方案是在每个日期选择器位置的id/类空间旁边创建数据保持器。然后使用(this)加载所选日期选择器的数据内容。

    html代码示例: 数据保持器包含要为关联的日期选择器显示的特定文本,如下所示:

    <p>Date1: <input type="text" class="datepicker" 
               data-dptxt="the text1 to display in datepicker" ></p>
    
    <p>Date2: <input type="text" class="datepicker" 
               data-dptxt="the Second text to display" ></p>
    

    然后jQuery文本注入到所选的datepicker日历中如下所示:

    $( ".datepicker" ).datepicker()
        .on( "click", function() {
            var dTxt = $( this ).data('dptxt');
        $('.ui-datepicker-calendar').after('<span class="middle">'+dTxt+'</>');
    });
    

    我添加了一些CSS格式,这样您就可以很容易地看到附加的半动态文本在两个日期选择器之间的变化。

    jsFiddle 实际解决方案(以下图片来自jsFiddle链接:)


    (来源: web-asylum.com )

        2
  •  0
  •   Zacho    16 年前

    var myDatePicker = $("#myDatePickerElement").datepicker();
    myDatePicker.after("text");
    
        3
  •  0
  •   dx_over_dt    7 年前

    为了避开你的“恶作剧” setTimeout 解决方法,可以附加 click Martin's answer .

    $(function() {
        function appendText(text) {
            $('.ui-datepicker-calendar').after('<span class="middle">'+lastText+'</>');
        }
    
        function addClickHandlers() {
            $('.ui-datepicker-prev, .ui-datepicker-next')
                .on('click', function() {
                    addClickHandlers();
                    appendText();
                });
        }
    
        var lastText;
        $( ".datepicker" ).datepicker()
            .on( "click", function() {
                lastText = $( this ).data('dptxt');
                appendText();
                addClickHandlers();
            });
    });