element.valueAsDate = xxx - больше не работает ... (JavaScript) - PullRequest
3 голосов
/ 27 декабря 2011

В моем приложении у меня есть JavaScript, который устанавливает значения по умолчанию для определенных дат. Функция, которая делает это, выглядит следующим образом:

<script language='javascript'> 
setNow(document.getElementById('date_86')); //line 166
setNow(document.getElementById('time_86'));
setNow(document.getElementById('date_0'));
setNow(document.getElementById('time_0'));

    function setNow(element) { //line 173
        date = new Date();date.setHours(date.getHours() + 3);
        element.valueAsDate = date;
    }
...
</script>

HTML:

<input type='date' id='date_86' name='date_86' />

Самое смешное, что до недавнего времени это работало, а теперь нет, и консоль Chrome говорит:

Uncaught Error: INVALID_STATE_ERR: DOM Exception 11
setNowmanual.html:173
(anonymous function)manual.html:166

Я не могу понять, почему setNow не является объектом в этом DOM, если я правильно понимаю смысл этого.

PS : происходит то же самое, когда я меняю объявление и вызов, в отчете консоли отличаются только номера строк.

Ответы [ 2 ]

5 голосов
/ 27 декабря 2011

Кровавый ад! Цитата из блога Chromium ( источник )

Привет всем! Мы отключили следующие типы ввода, и Google Chrome 16 нетне собираюсь их иметь. дата, дата и время, местное время, месяц, время и неделя .У этих типов были простые интерфейсы текстового поля с кнопками вращения.Начиная с Google Chrome 16, они не распознаются как допустимые типы ввода и работают как type = text.Они были инвалидами из-за своей незавершенности.Их пользовательские интерфейсы не были удовлетворительными, и существование этих типов было вредным для обнаружения признаков.Мы включим их снова, когда завершим реализацию их богатых пользовательских интерфейсов.- TAMURA, инженер-разработчик программного обеспечения Kent, Google

1 голос
/ 27 декабря 2011

РЕДАКТИРОВАТЬ: Согласно тому, что я только что прочитал здесь: http://www.w3.org/TR/html5/common-input-element-attributes.html, эта ошибка будет выдана, если вы попытаетесь установить valueAsDate для элемента управления, который «не основан на дате или времени», но счто вы вводите type="date" Я не уверен, что происходит.

РЕДАКТИРОВАТЬ 2: Согласно этой странице: https://groups.google.com/a/chromium.org/group/chromium-html5/browse_thread/thread/d1a22c42ebdf8ee4/9eb4210ce60341b1 Chrome версии 16 отключил типы ввода даты и времени, и они будуттрактоваться как текст.

Похоже, что Chrome не нравится точечный синтаксис для пользовательских свойств / атрибутов.Вместо этого используйте .setAttribute():

// Chrome doesn't like
element.valueAsDate = date;

// So do this:
element.setAttribute("valueAsDate",date);

// And to retrieve the value:
var v = element.getAttribute("valueAsDate")

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