0

我目前在我的 Symfony 项目中使用 sfFormExtraPlugin 中的 JQuery 插件 Datepicker。一切正常,但插件中似乎有一个奇怪的错误。如果我在任何一个月中选择 8 或 9,则表格中未选择日期。月份和年份工作正常,但未选择日期。该插件在其他所有日子里都能正常工作,但在这两天里却不行。

我使用的日期格式是日/月/年。不确定这是否是问题的一部分。

谢谢!

这是我用来初始化小部件的代码:

    $years = range(date('Y'), date('Y')-80);

    $this->widgetSchema['fecha_nacimiento'] = new sfWidgetFormJQueryDate(array(
                    'image'=>'/images/calendario.jpg',
                    'culture' => 'es',
                    'date_widget' => new sfWidgetFormDate(array('format'=>'%day%/%month%/%year%',
                            'years' => array_combine($years, $years)))
            )
    );

我还应该提到其他人告诉我他们有同样的问题。这似乎是插件的问题,但不确定。

4

3 回答 3

0

你在打电话parseInt()吗?你是这样称呼它的:

var foo = parseInt(dateString);

或像这样:

var foo = parseInt(dateString, 10);

?

应该是第二种方式。您的日期字符串可能以“0”开头,例如“08”或“09”。由于前导零字符,该parseInt例程认为您希望它读取以 8 为基数(八进制)的数字。第二个参数 (10) 明确告诉它您希望将字符串解释为以 10 为基数的数字表示。

于 2010-07-05T21:34:57.050 回答
0

Pointy 指出的问题是 parseInt() 调用。它实际上不是一个 parseInt() 调用,而是三个。正如他还指出 datePicker 工作正常。问题出在 symfony 插件 sfFormExtraPlugin 内部。当它与 datePicker jQuery 库接口时,有三个 parseInt() 调用缺少必要的参数来指示它们是十进制的。该错误实际上很容易修复。在典型安装中,您应该在 sfFormExtraPlugin/lib/widget/sfWidgetFormJQueryDate.class.php 中找到它。

然后搜索 parseInt 并且三元组是最先出现的一个。您只需检查它是否遵循以下结构: parseInt(arg, 10) (重要部分是 ,10.

感谢 Pointy 的灵感。

于 2010-07-17T00:29:44.043 回答
0

只是为了确保没有人感到困惑^^它应该看起来像这样与第 8 天和第 9 天一起工作

function wfd_%s_update_linked(date)
{
    jQuery("#%s").val(parseInt(date.substring(0, 4), 10));
    jQuery("#%s").val(parseInt(date.substring(5, 7), 10));
    jQuery("#%s").val(parseInt(date.substring(8), 10));
}

希望这可以帮助

于 2011-03-25T08:25:45.320 回答