jQuery ui.datepicker для элемента «select» - PullRequest
4 голосов
/ 20 января 2010

У меня есть элемент select с парой дат, но я также хочу дать возможность выбрать дату из средства выбора даты, поэтому у меня есть следующий код, который отображает значок календаря рядом с полем выбора.

<select name="birthday" >
     <option value="${merge0.birthday}">${merge0.birthday}</option>
     <option value="${merge1.birthday}">${merge1.birthday}</option>                        
</select>
<input type="hidden" id="bday_icon" />

Тогда это мой сценарий выбора даты

$("#bday_icon").datepicker(
            {
                changeMonth: true,
                changeYear: true,
                showOn: 'button',
                buttonImage: 'cal/images/calendar.gif',
                buttonImageOnly: true,
                onSelect: function(dateText, inst) {
                    var field = document.getElementsByNameByName("birthday");
                    var opt = document.createElement('option');
                    opt.text = dateText;
                    opt.value = dateText;
                    field.add(opt, null);
            }
            });

Не должна ли функция onSelect добавить новую опцию в элемент select html? разве ты не видишь в чем дело?

Спасибо.

Обновление 1:

onSelect: function(dateText, inst) {
      var opt = $('<option />').attr('value', dateText).text(dateText);
      $('select[name=birthday]').append(opt);
      }

Работает отлично, только замечание, что мне нужно было пометить как выбранную новую опцию, поэтому просто отредактируйте как: $('<option selected/>')

1 Ответ

3 голосов
/ 20 января 2010

Если только они не являются вашими функциями, я не совсем уверен, что такое .add() и getElementsByNameByName(). Кажется, я не могу найти add в API jQuery.

Также при работе с виджетами jQuery я предпочитаю использовать селекторы jQuery:

onSelect: function(dateText, inst) {
    var opt = $('<option />').attr('value', dateText).text(dateText);
    $('select[name=birthday]').append(opt);
}

У меня работает.

...