web-dev-qa-db-fra.com

Comment passer un objet événement à une fonction en Javascript?

function check_me() {
  //event.preventDefault();
  var hello = document.myForm.username.value;
  var err = '';

  if(hello == '' || hello == null) {
    err = 'User name required';
  }

  if(err != '') { 
     alert(err); 
     $('username').focus(); 
     return false; 
   } else { 
    return true; }
}

Dans Firefox, lorsque j'essaie de soumettre une valeur vide, l'erreur est renvoyée et le focus est redéfini sur élément. Mais la même chose ne se produit pas dans IE car cela génère une erreur, après avoir cliqué sur OK et posté le formulaire (renvoie true).

Comment puis-je éviter cela? Je pensais éviter cela en utilisant event.preventDefault (), mais je ne suis pas sûr de savoir comment faire cela en utilisant cette méthode. J'ai essayé de passer checkme (événement) .. mais cela n'a pas fonctionné. J'utilise Prototype js.

(Je sais comment passer un événement lorsque je lie une fonction .click en javascript .. au lieu d'appeler onclick au sein de HTML .. en utilisant Jquery, mais je dois déboguer ce morceau de code)

56
TigerTiger

Essayez de faire en sorte que l'onclick js utilise 'return' pour vous assurer que la valeur de retour souhaitée est utilisée ...

<button type="button" value="click me" onclick="return check_me();" />
20
Paul Dixon
  1. Modifier la définition de la fonction check_me en tant que ::

    function check_me(ev) {
    
  2. Vous pouvez maintenant accéder aux méthodes et paramètres de l'événement, dans votre cas:

    ev.preventDefault();
    
  3. Ensuite, vous devez passer le paramètre sur le onclick dans l'appel inline:

    <button type="button" onclick="check_me(event);">Click Me!</button>
    

A lien utile pour comprendre cela.


Exemple complet:

<!DOCTYPE html>
<html lang="en">
  <head>
    <script type="text/javascript">
      function check_me(ev) {
        ev.preventDefault();
        alert("Hello World!")
      }
    </script>
  </head>
  <body>
    <button type="button" onclick="check_me(event);">Click Me!</button>
  </body>
</html>
171
toto_tico