Невозможно выбрать день 8 и 9 в плагине DatePicker для Symfony (sfFormExtraPlugin) - PullRequest
0 голосов
/ 06 июля 2010

В настоящее время я использую плагин DatePicker JQuery в моем проекте Symfony с sfFormExtraPlugin. Все работает нормально, но в плагине есть странная ошибка. Если я выберу 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 голосов
/ 17 июля 2010

Проблема, как указывает Пойнти, заключается в вызове parseInt ().На самом деле это не один вызов parseInt (), а три.Как он также указывает, DatePicker работает отлично.Проблема внутри плагина Symfony sfFormExtraPlugin.Когда он взаимодействует с библиотекой datePicker jQuery, есть три вызова parseInt (), в которых отсутствует необходимый аргумент для указания того, что они десятичные.Ошибка на самом деле довольно легко исправить.В типичной установке вы должны найти его в sfFormExtraPlugin / lib / widget / sfWidgetFormJQueryDate.class.php.

Затем найдите parseInt, и триплет появится одним из первых.Вам нужно только проверить, что оно соответствует следующей структуре: parseInt (arg, 10) (важная часть - 10.

. Спасибо Pointy за вдохновение.

0 голосов
/ 25 марта 2011

Просто чтобы убедиться, что никто не запутался ^^ это должно выглядеть так, чтобы работать с 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));
}

надеюсь, это поможет

0 голосов
/ 06 июля 2010

Вы звоните parseInt() о чем-то?Вы называете это так:

var foo = parseInt(dateString);

или вот так:

var foo = parseInt(dateString, 10);

?

Это должен быть второй путь.Ваша строка даты может начинаться с «0», например «08» или «09».Подпрограмма parseInt думает, что вы хотите, чтобы она читала числа в базе 8 (восьмеричные) из-за этого начального нулевого символа.Второй параметр (10) явно говорит о том, что вы хотите, чтобы строка интерпретировалась как представление числа из 10-й базы.

...