почему jquery datepicker не работает на textarea, а только на входе - PullRequest
5 голосов
/ 07 ноября 2010

Пожалуйста, помогите мне, я невежественен.когда я пытаюсь открыть средство выбора даты в пользовательском интерфейсе 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 Конечно, они не находятся на одной странице вместе, это только ввод или только текстовое поле на странице.

Ответы [ 2 ]

5 голосов
/ 07 ноября 2010

Короткая версия: 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);
}
1 голос
/ 23 декабря 2013

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

Я добавил текстовое поле ввода в свой HTML-код с style="display:none", чтобы это поле было скрыто, но кнопка календаря отображается в виде изображения. пользователь нажимает на изображение, и когда он выбирает дату, у меня реализована функция onSelect, которая добавит значение в текстовую область. Я думаю, что оригинальная реализация использует .append (), чтобы добавить значение к вводимому тексту ... вот почему это не работает для textareas ... мое решение использует 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);
        } 
    });
...