javascript - alert box shows up N times after clicking N times on submit button -


given function:

function validate() {    var elements = ["firstname", "lastname", "password", "favfood", "favsport"];     document.getelementbyid('register').novalidate = true;    document.getelementbyid('register').addeventlistener('submit', function(event) {       (var = 0; < elements.length; i++) {          if(document.getelementbyid(elements[i]).hasattribute("required")) {             if(!document.getelementbyid(elements[i]).checkvalidity()) {                event.preventdefault();                alert('please, fill in every required field of form.');                break;             }          }       }    }, false); } 

and form:

<form name="register" id="register" method="post" action="this-file.php">    [html elements validate]    <input type="submit" value="register" onclick="validate()"> </form> 

when press register first time (without filling in anything), alert box shows once; if press register again, alert box shows twice , on. what's going on?

i'm using custom javascript function validate form because required attribute not work on safari.

thank in advance.

its quite straightforward, adding submit event listener each time whenever hit submit button i.e. through validate function. there 2 ways handle either register once or remove added listener first , add it.

first way

function validate() {    var elements = ["firstname", "lastname", "password", "favfood", "favsport"];     document.getelementbyid('register').novalidate = true;    document.getelementbyid('register').addeventlistener('submit', function(event) {       (var = 0; < elements.length; i++) {          if(document.getelementbyid(elements[i]).hasattribute("required")) {             if(!document.getelementbyid(elements[i]).checkvalidity()) {                event.preventdefault();                alert('please, fill in every required field of form.');                break;             }          }       }    }, false); }  validate(); // call function directly , remove submit button 

second way

function validatecallback(event) {     var elements = ["firstname", "lastname", "password", "favfood", "favsport"];      (var = 0; < elements.length; i++) {      if(document.getelementbyid(elements[i]).hasattribute("required")) {         if(!document.getelementbyid(elements[i]).checkvalidity()) {            event.preventdefault();            alert('please, fill in every required field of form.');            break;         }      }   } }  function validate() {    document.getelementbyid('register').novalidate = true;    document.getelementbyid('register').removeeventlistener('submit', validatecallback, false);    document.getelementbyid('register').addeventlistener('submit', validatecallback, false); } 

and use same using currently.


Comments

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -