почему jquery datepicker не работает с текстовой областью, а только с вводом

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

<script type="text/javascript">
     $(function() {    $("#${data_picker}").datepicker();  });
</script>

---- This will work ----
<input id="data_picker" />

---- This doesn't work ----
<textarea id="data_picker"></textarea>

Почему???

ps, конечно, они не на одной странице вместе, это только ввод или только текстовая область на странице.


person Rotem    schedule 07.11.2010    source источник
comment
Зачем вообще использовать текстовое поле для значения даты?   -  person Pekka    schedule 07.11.2010
comment
Это метод отображения по умолчанию в нашей системе.   -  person Rotem    schedule 07.11.2010


Ответы (2)


Краткая версия: datepicker просто не поддерживается с элементом <textarea>, в частности, он поддерживается с элементы <span> и <div> для встроенного режима и только <input> элемента в противном случае . Вот соответствующий код, выполняющий эти проверки:

var nodeName = target.nodeName.toLowerCase();
var inline = (nodeName == 'div' || nodeName == 'span');
if (!target.id) {
  this.uuid += 1;
  target.id = 'dp' + this.uuid;
}
var inst = this._newInst($(target), inline);
inst.settings = $.extend({}, settings || {}, inlineSettings || {});
if (nodeName == 'input') {
  this._connectDatepicker(target, inst);
} else if (inline) {
  this._inlineDatepicker(target, inst);
}
person Nick Craver    schedule 07.11.2010
comment
Мне удалось изменить код средства выбора даты, чтобы он работал с текстовой областью, как я могу загрузить его сюда? - person Rotem; 07.11.2010
comment
@Rotem - я не слежу ... на самом деле это не сайт для обмена кодами - и есть причины (события и несколько параметров, которые не работают), по которым код специально исключает <textarea> в настоящее время, вы решили все те? Например, как бы вы обработали браузеры с элементами <textarea> изменяемого размера? (по умолчанию в хроме) - person Nick Craver; 07.11.2010
comment
ну собственно мне нужна только поддержка IE и FF. Но после пары часов попыток реализовать это в своем веб-приложении я решил не использовать его. Спасибо вам за помощь. - person Rotem; 08.11.2010

Я реализовал способ заставить средство выбора даты работать с текстовыми областями в моем приложении.

Я добавил текстовое поле ввода в свой html-код с style="display:none", чтобы это поле было скрыто, но кнопка календаря отображалась как изображение. пользователь нажимает на изображение, и когда он выбирает дату, у меня есть функция onSelect, реализованная ниже, которая добавит значение в текстовую область. Я думаю, что исходная реализация использует .append() для добавления значения к входному тексту. Вот почему это не работает для текстовых областей... мое решение использует val(), и оно сработало, как и ожидалось, поэтому я делюсь с вами

jQuery(inputEl).datepicker({
        showOn: "button",
        buttonImage: "../image/calendar.gif",
        buttonImageOnly: true,
        buttonText: "",
        onSelect: function(selectedDate) {
            var textStr = jQuery(txtAreaEl).val();
            textStr = selectedDate;
            jQuery(txtAreaEl).val(textStr);
        } 
    });
person periback2    schedule 23.12.2013