【问题标题】:jQuery Date Picker Doesn't Show Original Text ValuejQuery 日期选择器不显示原始文本值
【发布时间】:2011-11-20 08:19:22
【问题描述】:

我正在为我的表单字段之一使用 jQuery 的日期选择器 - 出生日期。

该字段是使用 PHP 生成的,并将填充用户的原始出生日期。单击该字段会显示小部件,它做得非常好。

但是,文本框不显示原始值,即使它出现在浏览器的源代码中。我正在使用谷歌浏览器。

以下是jQuery代码:

$(function()
{
    $("#DatePicker").attr("readonly","readonly");

    $("#DatePicker").datepicker({
        changeMonth: true,
        changeYear: true,
        yearRange: "1950:+10"
    });

    $("#DatePicker").datepicker("option","dateFormat","dd MM yy");
});

这是 PHP 代码:

echo "<INPUT TYPE=\"TEXT\" NAME=\"$FieldName\" VALUE=\"$OriginalData\" ID=\"DatePicker\" CLASS=\"FullLength\">";

以下是HTML代码(复制自源代码):

<INPUT TYPE="TEXT" NAME="DateOfBirth" VALUE="18 August 2012" ID="DatePicker" CLASS="FullLength">

请告诉我有什么问题。谢谢。

【问题讨论】:

  • 刚才用普通的jQuery日期选择器试了一下,无法重现。很可能您拥有的其他一些代码(服务器端或客户端)正在覆盖该值并清除它。
  • @ShadowWizard:检查this demo VS this one。它清除了该字段,似乎它使另一个日期选择器。我可能遗漏了一些东西(只是快速检查了文档),但我真的希望 OP 的代码能够工作。如果你知道什么,我很感兴趣。
  • @Madmartigan 很好,没有注意到双重日期选择器的使用 - 听起来像是他们代码中的错误,不希望被多次调用。所有选项都必须在一次调用中给出,这没有什么坏处。

标签: jquery jquery-ui-datepicker


【解决方案1】:

我不知道为什么,但是这一行正在清除值:

$("#DatePicker").datepicker("option","dateFormat","dd MM yy");

如果可能,尝试在 Firefox 和 Chrome 中添加这样的选项,worked for me

$("#DatePicker").datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat: "dd MM yy"
});

【讨论】:

  • 这仅适用于显示预填充的日期,而不适用于选择新日期时的格式
【解决方案2】:

尝试使用其他浏览器(如 firefox)来检查它是否是浏览器兼容性问题,不确定 php 但在 asp.net 上,它们是将文本框文本可见性设置为 true 的选项

【讨论】:

  • 就我而言,这是一个兼容性问题。在 Chrome 和 Safari 上工作,但不在 Firefox 上。
【解决方案3】:

你应该使用setDate而不是直接设置输入值。

$("#birthday").datepicker()
.datepicker("option", "dateFormat", 'dd.mm.yy')
.datepicker('setDate', '<?= $humanoid->getBirthday()->format('d.m.Y') ?>');

【讨论】:

  • 这是一个正常工作的 - 不是公认的答案
【解决方案4】:

根据 Nik 的回答,这就是我如何让它在“所有 javascript”中工作

$(".popup-date").each(function(){
    var ele = $(this);
    var v = ele.val();
    ele.datepicker().datepicker("option", "dateFormat", "dd-M-yy").datepicker("setDate", v);
    });

接受的答案只能解决一半的问题。显示值,但是日期选择器选择后的日期格式错误。

我的示例使用了不同的日期格式(例如 2014 年 9 月 1 日),因为我刚刚复制了我终于开始工作的代码。我还必须将其分解为获取元素和值,因为内联时充其量只是零星的。

【讨论】:

    猜你喜欢
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多