тип ввода = заполнитель даты на iOS?

В настоящее время я разрабатываю веб-сайт, предназначенный для iPhone / iPad.

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

Вот как это выглядит в настоящее время; http://i44.tinypic.com/2u91xsz.png

Я хочу избавиться от этого текста даты закрытия и иметь над ним что-то похожее на раскрывающееся меню.

Это в основном просто для того, чтобы я мог сообщить пользователю, что он вводит, без необходимости использовать какое-либо дополнительное пространство на экране, так что это не самая большая проблема, если нет решения.


person David    schedule 08.03.2012    source источник
comment
Смотрите мой ответ здесь, он работает для меня на iOS 9.3: stackoverflow.com/a/39030299/2293304   -  person Rockallite    schedule 19.08.2016


Ответы (3)


Мне потребовалось некоторое время, чтобы понять это, оставьте его как type="text" и добавьте onfocus="(this.type='date')"

мне даже нравится онблур, о котором я упоминал

<input placeholder="Date" class="textbox-n" type="text" onfocus="(this.type='date')" onblur="(this.type='text')" id="date">
person Dally S    schedule 09.07.2014
comment
Кажется, это работает в основном нормально, однако в iOS 9.x, когда я впервые нажимаю на ввод, он застревает где-то между состоянием ввода текста и состоянием ввода даты. - person Craig Presti - MSFT; 15.03.2016
comment
Да, проблема в том, что для этого требуется два крана. Один, чтобы изменить его на сегодняшний день, один, чтобы фактически открыть средство выбора даты. - person Alex; 13.05.2017

атрибут placeholder, который работает с текстовыми полями, отображается только в настольной версии, а не в iphone. Есть ли способ обойти это?

Попробуйте использовать javascript и css.

<div id="closing_date">
<label for="closing_date_field" class="overlabel">Closing Date</label>
<input id="closing_date_field" type="date" name="closing_date">
</div>

см. код здесь

person Jasonw    schedule 08.03.2012
comment
Извините, я, вероятно, не объяснил это наилучшим образом. Он должен оставаться как тип ввода = дата. Вот как это выглядит сейчас: img.photobucket.com/albums/v605/ MANU80/e24e70b5.jpg , я хочу избавиться от этого текста даты закрытия и иметь что-то похожее на раскрывающееся меню над ним. - person David; 08.03.2012
comment
Обновлен тип ввода на сегодняшний день. Это, по сути, добавляет заполнитель с помощью javascript для ввода. - person Jasonw; 08.03.2012
comment
Боюсь, он все еще не работает, атрибут заполнителя работает на рабочем столе, но я не думаю, что он применим к сафари, он все еще отображается как пустое раскрывающееся меню. - person David; 08.03.2012
comment
Был ли достигнут какой-либо прогресс в этом? Спасибо - person Evanss; 19.04.2012
comment
@Kai, извини, пропустил твои заявления ранее. Смотрите обновленный ответ. Я протестировал эту ссылку jsfiddle, используя браузер с поддержкой html5, который на данный момент является оперой (версия 11.61, сборка 1250). Метка «Дата закрытия» появляется в самом поле ввода даты, и если дата выбрана из раскрывающегося календаря, теперь отображается значение. - person Jasonw; 20.04.2012
comment
Следует отдать должное этому автору. - person Jasonw; 20.04.2012
comment
Есть ли ошибки в этом коде? Добавление его ниже моего js, который загружается в готовый документ, приводит к тому, что все мои js перестают работать. спасибо $(document).ready( function (){ }); - person Evanss; 20.04.2012
comment
Я не думаю, что в коде есть какая-то ошибка, поскольку я предоставил код для jsfiddle в ответе? Ваш вопрос - это совершенно другой вопрос, и вы захотите создать для него еще один вопрос. - person Jasonw; 20.04.2012
comment
Привет, @Jasonw, можно ли скрыть заполнитель по умолчанию для типа ввода = дата на экране мобильного устройства (реагирующий тестовый режим) в настольной версии? - person Loc_rabbirt; 03.08.2015
comment
Действительно, я не знаю ключевого слова для его исследования, потому что тип даты не позволяет использовать текст, формат по умолчанию (мм/дд/гг) невозможно скрыть :(. Извините за мои знания. Вы можете увидеть версию для ПК: i.imgur.com/w96j8h3.jpg Тест адаптивной версии с помощью адаптивного инструмента Google Chrome: i.imgur.com/nofjM3a.jpg На самом деле ваше решение хорошо работает на iphone, но я не знаю как скрыть значение даты и времени по умолчанию на рабочем столе. - person Loc_rabbirt; 05.08.2015

Я заставил его работать с некоторым псевдоклассом ":before" и небольшим количеством javascript. У вас должен быть класс или идентификатор на вашем входе. Вот пример с идентификатором "myInput"

 #myInput:before{ content:"Date of birth"; width:100%; color:#AAA; } 
 #myInput:focus:before,
 #myInput.not_empty:before{ content:none }

Затем в javascript добавьте класс «not_empty» в зависимости от значения в событиях onChange и onKeyUp.

Вы даже можете добавить все это динамически в каждое поле даты.

Вот примерный код для этого:

$('input[type=date]').each(function(){
    var input=$(this);
    var id=input.attr('id');
    if (!id){
        id='RandomGeneratedId_'+Math.random().toString(36).substring(7);
        input.attr('id',id);
    }
    var placeholder=input.attr('placeholder');
    if (placeholder){
        $('head').append('<style> #'+id+':before{ content:"'+placeholder+'"; width:100%; color:#AAA; } #'+id+':focus:before,#'+id+'.not_empty:before{ content:none }</style>');
    }
    input.on('change keyup',function(){
        if ($(this).val()){
            $(this).addClass('not_empty')
        }else{
            $(this).removeClass('not_empty')
        }
        return false;
    });
});

Это не идеально, но хорошо работает в браузерах Chrome и iOS7.

person Guillaume Gendre    schedule 29.01.2014
comment
Вы можете использовать: content:attr(placeholder); Чтобы позволить HTML устанавливать содержимое. - person William George; 01.04.2015
comment
отличная идея! попробую и обновлю свой ответ, спасибо. Это должно позволить немного почистить код JS. - person Guillaume Gendre; 06.04.2015
comment
Теперь мы используем этот код в нашей гибридной платформе Cobalt (cobaltians.org), где мы разработали собственный компонент datePicker для упрощения использования. подобных входов. Эта структура также может помочь вам с нативным переходом между страницами и нативными панелями действий. - person Guillaume Gendre; 22.03.2016