IE - Как отключить обнаружение проверки при вводе после отправки формы?

У меня есть вход, который просит пользователя ввести действительный адрес электронной почты, затем я очистить ввод при отправке. Проблема возникает в IE: если пользователь однажды отправил недействительное электронное письмо, обратная связь обнаружения (красная рамка) все еще существует даже после того, как действительное электронное письмо было отправлено, потому что ввод был очищен. Есть ли способ остановить проверку после отправки действительного ввода?

const form = document.querySelector('form');
const input = document.querySelector('input');
form.addEventListener('submit', function(event) {
  event.preventDefault();
  /*
    stuff to do with the email
  */
  input.value = '';
})
<form>
  <input type = "email" required>
  <button type = "submit">submit</button>
</form>

У меня тоже бывает на firefox!

Baksteen 08.11.2018 09:11

Что вам нужно? подтвердить еще раз? или удалить только необходимую зависимость?

osiris85 08.11.2018 09:12

@Baksteen Не бывает в Chrome: 'D

Moaaz Bhnas 08.11.2018 09:13

@ osiris85 Есть ли способ остановить проверку после отправки действительного ввода?

Moaaz Bhnas 08.11.2018 09:15

@Baksteen отлично работает и в Opera, но спасибо, я не знал, что есть другие браузеры с этой проблемой.

Moaaz Bhnas 08.11.2018 09:24

@MoaazBhnas, вы можете использовать input.removeAttributte('required')

osiris85 08.11.2018 09:56

@ osiris85, но я хочу, чтобы это потребовалось в следующий раз

Moaaz Bhnas 08.11.2018 10:42

@MoaazBhnas хорошо, в этом случае ответ scheellmax правильный

osiris85 08.11.2018 10:45
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
8
151
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я нашел это! похоже, это можно сделать с помощью CSS :)

Похоже, Firefox добавляет собственный псевдокласс для добавления box-shadow к элементу ввода, вы также можете отключить его.

Я сделал это JSFiddle. В моем IE11 отображается сообщение «Это обязательное поле», но не отображается красная рамка.

const form = document.querySelector('form');
const input = document.querySelector('input');
form.addEventListener('submit', function(event) {
  event.preventDefault();
  /*
    stuff to do with the email
  */
  input.value = '';
})
/* Firefox */
input:-moz-ui-invalid{
  box-shadow:none;
}

/* Internet Explorer */
input:invalid{
    outline:none;
}  
<form>
  <input type = "email" required>
  <button type = "submit">submit</button>
</form>

Но сейчас обратной связи нет вообще в IE

Moaaz Bhnas 08.11.2018 09:21
Ответ принят как подходящий

вместо того, чтобы очищать ввод вручную, вы можете просто сбросить форму после отправки:

const form = document.querySelector('form');
const input = document.querySelector('input');
form.addEventListener('submit', function(event) {
  event.preventDefault();
  /*
    stuff to do with the email
  */
  //input.value = '';
  form.reset();
})
<form>
  <input type = "email" required>
  <button type = "submit">submit</button>
</form>

попробовал это через browserstack в IE11 и FF63 в Windows, а также на моем Mac в последних версиях Chrome и Firefox, все сработало. Какие именно платформы / версии браузера вы используете?

schellmax 08.11.2018 09:45

Большое тебе спасибо

Moaaz Bhnas 08.11.2018 10:41

Другие вопросы по теме