Как сделать так, чтобы всплывающее окно отображалось после выполнения полей формы?

#javascript #html #css

#javascript #HTML #css

Вопрос:

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

 <input type="text" placeholder="Name" name="name" required>
<input type="text" placeholder="Email address" name="mail" required>
<label>
<input type="checkbox" checked="checked" name="subscribe"> Daily 
Newsletter
</label>

<input type="submit" value="Subscribe" onclick="myFunction1()">
 

Теперь с помощью js он показывает всплывающее окно, которое я создал, благодаря человека за подписку, когда я нажимаю кнопку подписки, независимо от того, заполнены поля или нет.

 function myFunction1() {
    alert("Thanks for subscribing!")
}
 

Ответ №1:

Вы должны включить все входные данные в тег формы, как так:

 <form id='myForm'>
    <input type="text" placeholder="Name" name="name" required>
    <input type="text" placeholder="Email address" name="mail" required>
    <label>
    <input type="checkbox" checked="checked" name="subscribe"> Daily 
    Newsletter
    </label>

    <input type="submit" value="Subscribe" onclick="myFunction1()">
</form>
 

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

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

Чтобы добавить прослушиватель событий для запуска вашей функции всякий раз, когда в форме происходит отправка, вы можете сделать так:

 document.getElementById('myForm').addEventListener('submit', myFunction1)
 

Кроме того, вы также можете установить прослушиватель в html:

 <form onsubmit='myFunction1()'>
 

Но имейте в виду, что с помощью метода ‘addEventListener’ вы можете добавить несколько прослушивателей к одному и тому же событию. В то время как свойство onsubmit принимает только одну функцию.

Дополнительная информация о событиях и методе addEventListener:

https://developer.mozilla.org/en-US/docs/Web/Events

https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener

Ответ №2:

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

 function myFunction1() {
  var f1 = ; // get value of field1;
  var f2 = ; // get value of field2;
  if (f1 != '' amp;amp; f2 != ''){
      alert("Thanks for subscribing!");
  }
}
 

Ответ №3:

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

 function myFunction1() {

    var inputs = Array.fom(document.getElementsByClassName('myInput'));
    var allChecked = false;

    inputs.map(function(input){
        if (input.value == '') { allChecked = false }
    });

    if (allChecked) { alert("Thanks for subscribing!") }
};