我目前正在使用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)))
)
);
我还应该提到其他人告诉我他们有同样的问题。这似乎是插件的一个问题,但我不确定。
答案 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));
}
希望这会有所帮助