Internet Explorer удаляет значение поля ввода только для чтения при выборе

#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.