代码之家  ›  专栏  ›  技术社区  ›  Juan Besa

无法为symfony(sfformExtraPlugin)选择日期选取器插件中的第8天和第9天。

  •  0
  • Juan Besa  · 技术社区  · 14 年前

    我目前正在我的symfony项目中使用jquery插件datepicker和sfformeExtraPlugin。一切正常,但插件中似乎有一个奇怪的错误。如果我在任何月份中选择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 回复  |  直到 12 年前
        1
  •  0
  •   Pointy    14 年前

    你在打电话吗? parseInt() 关于什么?你是这样称呼它的吗?

    var foo = parseInt(dateString);
    

    或者像这样:

    var foo = parseInt(dateString, 10);
    

    ?

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

        2
  •  0
  •   Juan Besa    14 年前

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

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

    多亏了帕蒂的灵感。

        3
  •  0
  •   bipen    12 年前

    为了确保没有人感到困惑^ ^第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));
    }
    

    希望这有帮助