无法在Symfony的datepicker插件中选择第8天和第9天(sfFormExtraPlugin)

时间:2010-07-05 20:59:29

标签: jquery jquery-ui datepicker symfony-1.4

我目前正在使用sfFormExtraPlugin在我的Symfony项目中使用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)))
            )
    );

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

3 个答案:

答案 0 :(得分:0)

您是否在某事上致电parseInt()?你这样称呼它:

var foo = parseInt(dateString);

或者像这样:

var foo = parseInt(dateString, 10);

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

答案 1 :(得分:0)

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

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

感谢Pointy的灵感。

答案 2 :(得分: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));
}

希望这会有所帮助