Рейтинг:
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