#jquery #internet-explorer #input #readonly
#jquery #internet-explorer #ввод #только для чтения
Вопрос:
В настоящее время я создаю форму (посмотрите здесь, пожалуйста).
У меня есть два столбца, расположенные внизу, с полями ввода; Доходы и расходы. Если общий доход меньше общих расходов, форма не может быть отправлена. Эти два поля расположены в конце двух столбцов.
Они readonly
активированы, потому что пользователь не должен иметь возможности изменять значение, однако значение должно быть передано ( disabled
поле ввода этого не позволит).
$('#totalExpenses, #totalIncome').attr('readonly', true);
Это отлично работает в большинстве браузеров, но не в Internet Explorer. В IE 9 (и, вероятно, в более низких версиях) пользователь может выбрать поле readonly
-и тем самым сбросить значение поля. Пользователь не способен печатать — только фокусировка.
Я пробовал методы, подобные следующему коду, но безуспешно.
$('#totalExpenses, #totalIncome').focus(function(){
this.select();
});
Комментарии:
1. Попробуйте
this.blur();
вместоthis.select();
2. @APAD1, который удаляет курсор в фокусе в IE, что здорово, но значение по-прежнему сбрасывается в текст-заполнитель, когда я нажимаю на него (или использую вкладку на клавиатуре).
3. У тебя есть какие-нибудь идеи, @APAD1?
4. У меня нет машины с IE, доступной для меня, поэтому я могу только догадываться. Вы пробовали использовать
.attr('readonly','readonly');
вместо логического значения? (сомневаюсь, что это что-то изменит, но стоит попробовать)5. Не получилось. Хотя это странно. Заполнитель, например, «Общий доход» , не изменяется и не удаляется при выборе. Удаляется или сбрасывается только значение, которое было динамически введено через указанные выше поля.
Ответ №1:
Я только что узнал, что эта проблема возникает в IE11, если вы используете objTextarea.text(‘текст’) вместо objTextarea.val(‘текст’).
Ответ №2:
Лучший и, возможно, единственный способ добиться желаемого результата — просто скрыть read-only
версию полей totalIncome и totalExpenses, которые затем будут отправлены вместе с формой. После этого я смог отключить исходные поля totalIncome и totalExpenses.