【问题标题】:Jquery UI DatePicker, getting associated input text for default dateJquery UI DatePicker,获取默认日期的关联输入文本
【发布时间】:2014-12-10 08:54:29
【问题描述】:

我正在使用带有一些服务器端 asp:TextBox(创建)的 Jquery Datepicker UI 1.8.20。 要将 Datepicker 与文本框相关联,我向它们添加了一个类,然后在 body 标记之后执行以下操作:

 $('body').on('focus', ".datepicker_input", function() {
 ...
 });

这很好,但是现在,我还在这个文本框服务器端填充了一个日期(以预定义的格式 dd-MM-yyyy),并且我试图将 datepicker 默认日期设置为相同它的文本框,但到目前为止我还没有做到。

我做了一些尝试:

 $('body').on('focus', ".datepicker_input", function() {
    $(this).datepicker({
        defaultDate: $.datepicker.parseDate("dd-MM-yy", $(this).value),
 ...
 });

错误:未捕获的无效参数

 $('body').on('focus', ".datepicker_input", function() {
    $(this).datepicker({
        defaultDate: $.datepicker.parseDate("dd-MM-yy", this.value),
 ...
 });

错误:位置 3 处未捕获的未知名称

我试图在 chrome 中调试 jquery 以查看 $(this) 是什么并且我得到了 window 对象,所以我想这就是问题所在。我不知道如何调用关联对象到日期选择器...

更新 1 - 完整的 DatePicker 代码

$('body').on('focus', ".datepicker_input", function() {
    $(this).datepicker({
        defaultDate: $.datepicker.parseDate("dd-MM-yy", $(this).value),
        minDate: 0,
        beforeShowDay: $.datepicker.noWeekends,
        changeMonth: true,
        changeYear: true,
        numberOfMonths: 1
    });
$.datepicker.regional['pt-PT'] = {
        closeText: 'Fechar',
        prevText: '',
        nextText: '',
        currentText: 'Hoje',
        monthNames: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro',
                        'Outubro', 'Novembro', 'Dezembro'],
        monthNamesShort: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro',
                        'Outubro', 'Novembro', 'Dezembro'],
        dayNames: ['Domingo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', 'Sabado'],
        dayNamesShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'],
        dayNamesMin: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'],
        weekHeader: 'Sm',
        dateFormat: 'dd-mm-yy'
    };
    $.datepicker.setDefaults($.datepicker.regional['pt-PT']);

【问题讨论】:

    标签: javascript jquery asp.net jquery-ui datepicker


    【解决方案1】:

    由于您的文本框已经填充了值,因此只需指定日期格式即可。这是工作jsFiddle

    HTML:

    <input id="datepicker" class="datepicker_input" type="text" VALUE="05-april-2014"> 
    <input id="datepicker" class="datepicker_input1" type="text" VALUE="05-11-2014">         
    

    JS:

    $('body').on('focus', '.datepicker_input', function() { 
          $(this).datepicker({dateFormat:"dd-MM-yy"}); 
    });
    $('body').on('focus', '.datepicker_input1', function() { 
          $(this).datepicker({dateFormat:"dd-mm-yy"}); 
    });
    

    【讨论】:

    • 嗨,我永远不会尝试这样做,因为我在第一次通话后就有了 DateFormat(参见更新 1)。无论如何,这确实解决了我的问题。谢谢!
    【解决方案2】:

    试试这个:-

    $('body').on('focus', '.datepicker_input', function() {
      $(this).datepicker({
        dateFormat: 'dd-MM-yy',
        defaultDate: $(this).val(),
        ...
      });
    });
    

    Working DEMO

    【讨论】:

    • 你能告诉我 $(this) 在上下文中是什么吗?就像我说的,当使用 Chrome 开发人员查看 $(this) 返回窗口时,但使用您的代码也可以。注意:由于时间和简单性,我接受了 Dave 解决方案,因为他的解决方案不需要 de defaultDate 行
    • 如 answer..on body focus event..中所示将当前元素初始化为datepicker..@FEST
    • 感谢解释,这意味着如果我使用我知道目标元素的主要父元素而不是 $('body') ,我可以获得更好的性能。谢谢 ;) @Kartikeya
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    相关资源
    最近更新 更多