Uncaught TypeError: У объекта # <HTMLInputElement> нет метода datepicker

0

У меня есть следующий html:

<table>
    <tr>
        <td>
            <select id="one">
                <option>some option</option>
                <option>some option</option>
                <option>some date</option>
                <option>some option</option>
                <option>some date</option>
            </select>
        </td>
        <td>
            <select id="two">
                <option>some option</option>
                <option>some option</option>
                <option>some date</option>
                <option>some option</option>
                <option>some date</option>
            </select>
        </td>
    </tr>
    <tr>
        <td><input type="text" id="1" /></td>
        <td><input type="text" id="2" /></td>
    </tr>
</table>

и следующий javascript:

$("select").change(function() {
    var element = this;
    var value = $('#one').find(":selected").text();
    var id = ""
    if(value.match(/date/)) {
        switch(element.id) {
            case "one":
                id = "1";
                break;
            case "two":
                id = "2";
                break;
        }
    }

    addDatePicker(id);
});

function addDatePicker(id) {
    var element = document.getElementById(id);
    $(function() {
        element.datepicker();
    });
}

В chrome я получаю ошибку, которую я поставил как заголовок вопроса. Я предупредил переменную id в функции addDatePicker(), и я получил правильное значение, поэтому я не уверен, почему я получаю эту ошибку.

  • 2
    element - это элемент DOM, а не объект jQuery. Почему вы используете document.getElementById ? Просто сделайте $('#'+id) .
Теги:
jquery-ui-datepicker

1 ответ

3
Лучший ответ

Для этого вам понадобится объект jQuery.

function addDatePicker(id) {
    $('#' + id).datepicker();
}

И поместите обработчик события change внутри DOM ready, а не DOM, готовый внутри функции addDatePicker

  • 1
    Или просто $('#' + id).datepicker();
  • 0
    @adeneo спасибо, я собирался попробовать это, но надеялся, что мне не нужно, спасибо за разъяснения, я отмечу как ответ.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню