JQuery Birthday Picker, имеющий дело с обновлением формы - PullRequest
7 голосов
/ 28 января 2011

Я использую отличный плагин jquery для выбора даты рождения для своей веб-формы.

Демонстрация здесь: http://abecoffman.com/stuff/birthdaypicker/

Проблема, с которой я сталкиваюсь, заключается в проверке формы,Моя проверка формы перенаправит обратно на ту же страницу, и я потеряю выбранную дату.

Можно ли добавить параметр в javascript средства выбора даты: http://abecoffman.com/stuff/birthdaypicker/bday-picker.js

чтобы я мог установить «выбранную дату по умолчанию».Конфиг может работать примерно так:

$("#picker1").birthdaypicker({
  chosenDay: 1;"
  chosenMonth: 28;"
  chosenYear: 2011;"
 });

Это установит «выбранную» дату на 28 января 2011 года.

Ответы [ 2 ]

3 голосов
/ 28 января 2011

Без изменения плагина вы можете использовать JQuery для установки значений.Разметка, которую генерирует плагин, выглядит следующим образом:

<fieldset class='birthday-picker'>
    <select class='birth-year' name='birth[year]'></select>
    <select class='birth-month' name='birth[month]'></select>
    <select class='birth-day' name='birth[day]'></select>
</fieldset>

Таким образом, вашему JQuery просто нужно будет удержать эти элементы и установить их значение .Вы хотите убедиться, что вы устанавливаете значение, которое существует в списке выбора.

$('select.birth-year').val('my_year');      // 1980
$('select.birth-month').val('my_month');    // 1-12 (not "Jan" which is the text)
$('select.birth-day').val('my_day');        // 1-31 (keep month limitation in mind)

Этот код должен был бы вызываться после вызова плагина, иначе разметка не будет иметьбыло сгенерировано еще.

0 голосов
/ 26 августа 2015

Если сервер возвращает такую ​​дату (код c #):

new DateTime(birthYear, birthMonth, birthDay, 0, 0, 0, DateTimeKind.Utc).ToString(CultureInfo.InvariantCulture);

В файле jquery-birthday-picker.min.js вы найдете такой код:

if (s.defaultDate) {
            var d = new Date(s.defaultDate);
            console.log(d);
            u.val(d.getFullYear());
            a.val(d.getMonth() + 1);
            f.val(d.getDate())
        }

просто измените его на:

if (s.defaultDate) {
            var d = new Date(s.defaultDate);
            console.log(d);
            u.val(d.getFullYear());
            a.val(d.getMonth() + 1);
            f.val(d.getDate())

            //Added by LVC
            $birthday.val(s.defaultDate);
        }

Затем, когда вы укажете defaultDate, элемент управления будет работать так, как мы хотим

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...