2010-07-05 2 views
0

В настоящее время я использую плагин JQuery Datepicker в своем проекте Symfony с помощью sfFormExtraPlugin. Все работает нормально, но в плагине есть странная ошибка. Если я выбираю 8 или 9 в любом месяце, день не будет выбран в форме. Месяц и год работают правильно, но день не выбран. Плагин работает корректно для всех других дней, но не для этих двух дней.Невозможно выбрать день 8 и 9 в плагине datepicker для Symfony (sfFormExtraPlugin)

Формат даты, который я использую, это день/месяц/год. Не уверен, что эта часть проблемы.

Спасибо!

Вот код, я использую для инициализации виджета:

$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

Покажите нам код, используемый для инициализации Datepicker. Звуки для меня, как вы используете параметр, который не позволяя пройти мимо текущего месяца (7). –

+0

@ Майк хорошо, что он id "выберите ** день ** 8 и 9" ... – Pointy

+1

@ Положительно, может быть, он вводит в заблуждение формат. Вот почему я попросил опубликовать код. –

ответ

0

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

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

Благодаря заостренный для вдохновения

0

Вы звоните по телефону parseInt()? Вы называете это так:

var foo = parseInt(dateString); 

или как это:

var foo = parseInt(dateString, 10); 

?

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

+0

Я думаю, что это отличная идея. Я искал этот случай, но не смог его найти. :( –

+0

Ну, это случилось со мной, и это довольно распространенная проблема. У вас есть какой-нибудь свой Javascript где-то на сайте? Где вы * интерпретируете * значения даты? – Pointy

+0

Ну, как я уже сказал, у меня нет javascript code Я просто использую библиотеку, и как я ее использую, это именно то, что я поставил выше. Проблема должна быть в плагине или в Symfony. Я надеялся, что у кого-то была бы такая же проблема. –

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)); 
} 

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