kongalshiva549 Ответов: 2

Как установить формат даты для входного элемента управления HTML


У меня есть входной контроль htm

<input  type="date"> 


когда я получаю доступ к throgh google chrome дата отображается в
M/dd/yyyy


в IE это отображение гггг-ММ-ДД

как сделать во всех браузерах одинаковый формат
M/dd/yyyy


Что я уже пробовал:

попробовал сохранить место держателя для входного контроля в качестве
M/dd/yyyy

2 Ответов

Рейтинг:
2

OriginalGriff

Если вам нужен определенный формат, используйте три элемента управления: год (если выбрано, включает месяц), месяц (если выбрано, включает день и заполняет его). Используйте выпадающие списки, и пользователь не сможет ошибиться в формате, и он будет работать одинаково во всех браузерах.


kongalshiva549

Я назначаю из серверной части и входного контроля

Dave Kreskowiak

и, похоже, вы полностью проигнорировали то, что написал Грифф в своем ответе.

Сделайте это с помощью 3 выпадающих списков, и вам не нужно будет делать никакого форматирования входных данных вообще.

kongalshiva549

В ng-модели уже есть данные , связанные с управлением вводом, и они доступны только для чтения, и для этого нет возможности выбрать дату

gggustafson

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

Рейтинг:
1

Richard Deeming

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

Значение ввода даты всегда будет использовать yyyy-MM-dd формат, чтобы гарантировать, что значение является однозначным.

Браузеры, не поддержка ввода даты - и это включает в себя все версии IE - будет отображать простой текстовый ввод, содержащий необработанное значение. Не будет никакой проверки, никакого локализованного форматирования и никакого выбора даты. Вам нужно будет использовать пользовательский элемент управления Javascript date picker в этих браузерах, если вы хотите предоставить удобный способ выбора даты.

Скрипт для определения того, поддерживает ли браузер ввод даты, довольно прост - этот ответ StackOverflow[^] есть хороший пример:

function checkDateInput() {
    var input = document.createElement('input');
    input.setAttribute('type','date');

    var notADateValue = 'not-a-date';
    input.setAttribute('value', notADateValue); 

    return (input.value !== notADateValue);
}
Если эта функция возвращает false, вам нужно будет использовать элемент управления Javascript date picker.

Могу ли я использовать... Типы ввода даты и времени[^]


kongalshiva549

как сохранить валидацию на дату, она должна принимать только m/dd/yyyy, в настоящее время, когда я ввожу некоторые данные и нажимаю на кнопку Сохранить, Она позволяет, но не сохраняет их в базе данных.

Richard Deeming

Ввод даты будет всегда отправить с помощью yyyy-MM-dd формат.

Если вы используете привязку модели MVC для привязки к DateTime собственность, это должно сработать. Если вы вручную анализируете представленные данные, вам нужно будет использовать значение datetime.Метод tryparseexact[^] чтобы разобрать его, используя этот формат.

Как только у вас есть DateTime тогда вам не нужно форматировать его , чтобы сохранить в базе данных. Вы устанавливаете значение параметра равным DateTime, и сохраните это значение параметра в столбце даты.

Если у вас возникли проблемы с прохождением DateTime в этом случае либо вы не используете параметризованный запрос, либо используете неверный тип данных в своем столбце.

kongalshiva549

просто мне нужно показать pop, если пользователь вводит правильный формат даты в текстовое поле.

Richard Deeming

Нет такого понятия, как "неправильный формат даты". Пользователи будут вводить дату в формате, определяемом их локализацией. Браузер отправит дату на сервер в недвусмысленном виде yyyy-MM-dd формат.

Если вы пытаетесь заставить пользователей ввести дату в определенном формате, то вы делаете это неправильно.

kongalshiva549

функция dateValidate(inputField) {
var datePat = /^\d{1,2}\/\d{1,2}\/\d{4}$/;
var matchArray = String(inputField.value).матч(datePat);
if (matchArray === null) {
предупреждение("дата начала должна быть в формате ММ/ДД/гггг");
возвращать false;
}
}

Richard Deeming

Как я уже сказал, Вы делаете это неправильно.

kongalshiva549

я уступил onblur для входного контроля, но он также разрешает 55/55/2019