【问题标题】:Date formatting not working for datepicker日期格式不适用于日期选择器
【发布时间】:2019-07-24 16:47:27
【问题描述】:

我正在使用 datepicker 来允许用户选择一个日期。我不能改变格式。

我一直在尝试基于此处找到的示例,例如 dateFormat 甚至格式,但它仍然不起作用

这就是我将日期选择器添加到表中的方式

$(document).ready(function() {
    $("#btnView").click(function() {

         if (!Array.isArray(aItems) || !aItems.length) {

                document.getElementById('btnSubmit').style.visibility = 'hidden';               
            }

         else {     

             document.getElementById('btnSubmit').style.visibility = 'visible';  
            var html2 = '';
            $.each(aItems, function(i, post) {

                let oQtyModal = "itemqtymodal_" + i;
                let oDate = "iDate_" + i;

                html2 += '<tr>';
                html2 += '<td>' + post["NEW_ITEM-MATNR"] + '</td>';
                html2 += '<td>' + post["NEW_ITEM-MATGROUP"] + '</td>';
                html2 += '<td>' + post["NEW_ITEM-DESCRIPTION"] + '</td>';
                html2 += '<td>' + post["NEW_ITEM-PRICE"] + '</td>';
                //html2 += '<td>' + post["NEW_ITEM-QUANTITY"] + '</td>';
                html2 += '<td>'  + '<input type="text"' + 'onchange="getQty(this)"' + 'name="' + oQtyModal + '"' + 'id="' + oQtyModal + '"' + 'value='+post["NEW_ITEM-QUANTITY"]+'>' + '</td>';
                html2 += '<td align="center">' + post["NEW_ITEM-UNIT"] + '</td>';
                html2 += '<td>' + post["NEW_ITEM-CUST_FIELD1"] + '</td>';
                html2 += '<td>' + '<input type="text"' + 'class="datepicker"' + 'id="' + oDate + '"' + 'value='+post["NEW_ITEM-CUST_FIELD2"]+'>' + '<i class="far fa-calendar-alt" style=' + 'font-size:24px;color:#1E90FF' + '></i></></td>';
                html2 += '<td>' + '<input type="button" onClick="deleteProduct(this)" value="Delete Item" />' + '</td>';
                html2 += '</tr>';           
                $('#table2 tbody').html(html2);
              });
            var dateToday = new Date();
            $('.datepicker').datepicker(
              { 

                changeYear: true,
                changeMonth: true,
                format: 'dd/mm/yyyy',
                autoclose: true,
                startDate: new Date()
              });           
            }
    });
});

获取日期数据和更新数组的主要代码如下

$(document).on("change", ".datepicker", function(){
    var oDate = $(this);
    var aIndex = oDate[0].id.split('_');
    aItems[aIndex[1]]["NEW_ITEM-CUST_FIELD2"] = document.getElementById(oDate[0].id).value

 });

编辑:它现在工作。以上代码已更新。

【问题讨论】:

  • 你不应该初始化 datepicker 两次。删除$(this).datepicker();

标签: javascript jquery html


【解决方案1】:

这里是示例:https://jsfiddle.net/3mygd26w/
HTML

Date Picker on input field: <input type="text" id="date1" name="date1"/> <br/>

Date Picker on input field: <input type="text" id="date2" name="date2"/> <br/>

Date Picker on input field: <input type="text" id="date3" name="dat3"/> <br/>

JavaScript:

$('#date1').datepicker({
    changeMonth: true,
    changeYear: true,
    showButtonPanel: true,
    dateFormat: "m/d/yy"
});
$('#date2').datepicker({
    changeMonth: true,
    changeYear: true,
    showButtonPanel: true,
    dateFormat: "d/m/yy"
});
$('#date3').datepicker({
    changeMonth: true,
    changeYear: true,
    showButtonPanel: true,
    dateFormat: "mm/dd/yy"
});

【讨论】:

  • 谢谢,但我有多个没有硬编码的日期选择器。我已经更新了我的第一篇文章,向你们展示我如何将日期选择器添加到我的表中
【解决方案2】:

如果您使用的是框架,请尝试在任何模板更改后清空缓存,如果您使用的是 symfony,请检查您写入的是主文件而不是缓存中的文件。

【讨论】:

    【解决方案3】:

    使用 jquery

     <script>
      $( function() {
        $( "#datepicker" ).datepicker({
         dateFormat: 'dd-mm-yy'
        });
      });
      </script>
    

    参考-https://jqueryui.com/datepicker/

    【讨论】:

      【解决方案4】:

      我会尽量给出更详细的答案。您的错误是两次初始化 Datepicker。第一次 - 没有dateFormat。当您第二次使用dateFormat 调用它时,它已经被初始化了。相反,如果您打算重用相同的 Datepicker 对象,则应将其分配给一个变量。

      更新以反映问题代码更改

      $('input.datepicker').datepicker({ dateFormat: 'dd/mm/yyyy'});
      

      仅在插入整个表格后一次调用此初始化代码。

      注意:对于 userdate,最好听 change 事件,而不是 focus,否则你会坚持以前的值

      $('input.datepicker').change(function(){
        var selectedDate = $(this).val();
        console.log(selectedDate);
      })
      

      【讨论】:

      • 您好 Evgenii,谢谢我已经尝试过了,但格式仍然没有生效。我将更新我的第一篇文章,向您展示我为添加日期选择器所做的工作
      • 现在比以前更糟了。如果您已经在使用 jQuery,则不需要 Vanilla JS 方法。您正在为每个循环周期中的所有输入初始化 Datepicker。在循环外进行初始化。仅在附加日期格式对象的情况下执行一次。我还更新了我的答案,包括监听更改事件示例。
      • 嘿兄弟,我在循环之后添加了初始化。 (实际上,甚至以前的代码。初始化是在 for 循环之后。我添加了$('input.datepicker').datepicker({ dateFormat: 'dd/mm/yyyy'}); 但格式仍然是 mm/dd/yyyy
      • 我已经更新了我的第一篇文章,以更全面地展示我是如何添加日期选择器的。奇怪的是,在我选择日期后自动关闭功能正常,但格式仍然没有改变:(
      • 您能否从输入标签中删除onchangevalue 属性以进行调试?并检查问题是否仍然存在
      【解决方案5】:

      感谢大家的指导。我已经更新了我的第一篇文章以展示我所做的事情。

      【讨论】:

        猜你喜欢
        • 2014-04-22
        • 2016-05-28
        • 2012-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-08
        • 1970-01-01
        相关资源
        最近更新 更多