Программа Expression Engine SafeCracker Format Datepicker

Привет, я создаю форму в механизме выражений, используя взломщик сейфов, и одно из моих полей, называемое «дата рождения», использует тип поля даты. Средство выбора данных jQuery автоматически добавляется механизмом выражений, но я не вижу, как добавить какие-либо параметры или форматирование, которые я обычно добавляю в средство выбора даты при создании поля этого типа.

Мой обычный код:

 $(function() {
    $( "#datepicker" ).datepicker({
        changeMonth: true,
        changeYear: true,
        dateFormat: 'dd/mm/yy',
        maxDate: new Date()
    });
 });

Единственный вариант, который я могу придумать, - это сделать это поле текстовым вводом и добавить средство выбора даты в шаблон, но это удалит проверку даты EE, которую он выполняет для этого типа поля.

Есть ли способ добавить дополнительные параметры выбора даты в этот тип поля?


person Theo Kouzelis    schedule 08.10.2012    source источник
comment
какие опции вы хотели добавить?   -  person Berker Yüceer    schedule 08.10.2012
comment
В моем коде changeMonth, changeYear, dateFormat, maxDate   -  person Theo Kouzelis    schedule 08.10.2012


Ответы (1)


Ну, вы можете установить datepicker="no" в своем теге Safecracker, а затем добавить свой javascript вручную. Однако: вы не можете использовать свой пользовательский формат, как показано выше - для проверки ввода как собственного поля даты EE он должен использовать формат datePicker yy-mm-dd, плюс текущее время в формате HH:MM AM/PM - что datePicker изначально не делает. (см. этот пост одного из разработчиков EE как они это делают)

Вместо этого можно было бы использовать поле даты EEvent Helper, так как для проверки не требуется часть времени (хотя для этого также требуется yy-mm-dd). Однако datepicker="no" влияет только на собственные поля даты, поэтому вместо этого вам придется установить safecracker_head="no", но тогда вы также потеряете все javascript или CSS, необходимые для других типов полей в вашей форме.

Re: использование обычного текстового поля: в дополнение к проблеме проверки ваши данные будут храниться как все, что вводится (мм/дд/гг), вместо этого преобразуются в метку времени, что гораздо более полезно и портативно.

Единственное верное решение - написать для этого свой собственный тип поля даты. Было бы не очень сложно.

person Derek Hogue    schedule 08.10.2012
comment
Ура, спасибо за вашу помощь еще раз. Ваше первое решение звучит хорошо, потому что вы можете заставить datepicker отображать один формат и POST требуемый формат EE yy-mm-dd. Я также рассмотрю возможность написания типа поля, потому что всегда приятно, когда все хорошо работает в бэкэнде. - person Theo Kouzelis; 08.10.2012
comment
Ах, я не знал этого о datePicker, очень мило. - person Derek Hogue; 08.10.2012
comment
Опция называется altFormat просто для справки. - person Theo Kouzelis; 08.10.2012
comment
На самом деле вам не нужна опция datepicker=no, потому что это, кажется, останавливает любой код выбора даты, даже если вы включаете его отдельно через тег {exp:jquery:script_tag ui='datepicker'}. В конце концов у меня сработало то, что я просто перезаписал там средство выбора даты, создав экземпляр моего внизу страницы. - person Theo Kouzelis; 08.10.2012