2017-02-21 20 views
1

Я использую readonly, disabled и required свойство ввода текстового поля, как это:Почему `readonly`,` disabled` и `required` в том же тексте поля ввода не работают должным образом?

<input type="text" id="visitDate" name="visitdate" readonly="readonly" disabled="disabled" required="required" /> 

Моя проблема заключается в том, что два из трех собственности, т.е. disabled и readonly работают нормально, но required не работает. Кнопка отправки позволяет отправить даже пустую. Но если я удалю readonly, то форма не может быть отправлена ​​пустой.

Я использую

только для чтения, потому что я использую выбора даты и пользователь не имеет права на сегодняшний день ввода инструкции.

отключен, потому что я хочу, это поле ввода отключить в начале

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

+2

Чтобы уточнить, ожидаемое поведение заключается в том, что форма не может быть отправлена, потому что есть обязательное поле, которое невозможно заполнить? –

+3

Если вы отключите поле, оно не отправит это поле, поэтому вы не работаете. Используйте readonly и требуется. –

+0

@AmanRawat Я уже упоминаю «отключить в начале», но не перед отправкой формы. Ввод будет включен позже, прежде чем отправлять форму. –

ответ

2

Что действительно происходит, так это то, что по умолчанию (HTML Implementation of Validations) проверка в HTML не срабатывает, если поле доступно только для чтения или отключено.

Причина в том, что это просто. Если поле пусто, а атрибут отключен или доступен только для чтения, и применяется требуемая проверка, форма не может быть действительной в любое время.

Похоже, что нет прямого и этическое решения этой проблемы, но косвенное решения может быть:

я) Handeling ключа вверх/вниз ключа события, так что вход не может быть добавлен.

JQuery Код:

$('input').keypress(function(e) { 
    e.preventDefault(); 
}); 

б) Для отключения контроля, я предложил бы не добавить DatePicker к элементу, пока вы не хотите. Позже вы можете добавить его с помощью JS, когда это необходимо (в вашем случае зарегистрируйте datepicker в событии с измененным списком).

Кроме того, вы можете использовать Включение и отключение событий JQuery, если вы используете Datepickers JQuery UI, как показано ниже:

$("#txtSearch").datepicker("enable"); 
$("#txtSearch").datepicker("disable"); 

Для дальнейшего чтения, вы можете посмотреть на this ссылку. Это обсуждение проверки Bootstrap, но это относится и к чистому HTML.

Надеюсь, это поможет.

+0

Эта проблема срабатывает, если используется свойство readonly. Следующая вещь заключается в том, что я использую только чтение, потому что пользователь должен выбрать дату с даты, а не ручной ввод. И у меня есть только один вариант использования выбора даты. –

+1

С помощью readonly можно заменить событие нажатия клавиш. Это единственное решение, которое я могу выяснить: O –

+0

Поделитесь фрагментом кода, я могу помочь, добавив некоторые JS на это: –

3

Если элемент равен disabled, он игнорируется при проверке формы.

Из WHATWG спецификации HTML:

Если элемент отключен, он запрещен ограничений проверки. (source)

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

Разница между disabled и readonly является то, что только для чтения элементов управления не может функционировать, в то время как элементы управления для инвалидов вообще не функционируют как элементы управления, пока они включены. (source)

«Все еще функционирует» включает в себя проверку, а также такие вещи, как значение, являющееся частью данных, отправленных при отправке формы.

+0

Я полностью согласен с разницей между отключенными и readonly. Но мне нужны оба, потому что у меня есть '' ввод, а затем ввод текста поле. –

+0

@KrityShrestha Это то, что вам придется решать с помощью Javascript, скорее всего, вместо проверки HTML. – lonesomeday