IE11 не выполняет повторную проверку формы после сброса формы

Я использую проверку формы HTML5 и обнаружил странную проблему в IE11. Проблема не проявляется в Chrome, Firefox, Opera или Edge.

По сути, IE11 не выполняет сброс формы правильно. Я ожидал бы, что сброс формы очистит все ошибки проверки и вернет значения формы к их начальным значениям. При следующей отправке я ожидаю, что форма будет повторно проверена.

Кажется, что во время сброса формы происходит сброс только значений - состояния ошибок проверки (или даже успешная проверка), похоже, остаются, пока пользователь не изменит поле.

Единственный обходной путь, который я вижу для своего веб-приложения, - это перезагрузить страницу, а не выполнять сброс формы. Есть другие идеи?

Рабочий процесс выглядит следующим образом:

  1. Используя IE11, удалите текст из обязательного поля ввода.
  2. Нажмите «Отправить», получите ошибку проверки.
  3. Нажмите «Сброс», значение поля ввода вернется к исходному значению.
  4. Нажмите «Отправить», получите сообщение об ошибке проверки, но поле заполнено с использованием начального значения.

    <!DOCTYPE html>
    <html>
    <head>
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
    </head>
    <body>
      <form id="theForm" name="theForm">
        <input type="text" name="textBox" value="test" required>
        <input type="submit">
        <input type="reset">
      </form>
    </body>
    </html>


person psynnott    schedule 22.10.2018    source источник


Ответы (1)


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

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

<!DOCTYPE html>
<html>
<head>
  
<script type="text/javascript">

function resetfrm()
{
document.getElementById("txt1").value='';
document.getElementById("theForm").reset();

alert("clear");
}
</script>
</head>
<body>
  <form id="theForm" name="theForm">
    <input type="text" name="textBox" id="txt1" value="test" required>
    <input type="submit">
    <input type="button" onclick="resetfrm()" value="Reset">
  </form>
</body>
</html>

person Deepak-MSFT    schedule 23.10.2018
comment
Спасибо, это работает. Похоже, что простая установка значения элемента через Javascript заставляет IE повторно проверять этот элемент. - person psynnott; 23.10.2018