0

J'ai créé une fonction qui valide les entrées avec différents types de chaînes. J'ai de sérieux problèmes avec certaines choses. Je l'appelle sur le formulaire soumettre et pour chaque entrée sur changer. J'ai écrit mon code ci-dessous et ensuite l'appel de la fonction. Chose est: quand je l'appelle sur le changement et actualiser la page, il exécute automatiquement les validations sur le changement lorsque la page est en cours de chargement et rend les erreurs.jQuery autoruns fonctions sur les événements de changement lorsque la page est chargée

var Val = { 
    'string': function(ident, req, regexp, offset, limit) { 
     var ele = $(document.getElementById(ident)); 
     Val.errors = false; 

     if (!ele.val() && req == 1) { 
      alert('blank'); 
      Val.errors = true; 
      $("#" + ident + "Error").html("This field cannot be empty."); 
      $("#" + ident + "Error").show("fast"); 
     }else if ((ele.val().length <= offset || ele.val().length > limit) && Val.errors == false) { 
      alert('not long enough'); 
      Val.errors = true; 
      $("#" + ident + "Error").html("This field must be between " + offset + " & " + limit + " charecters long"); 
      $("#" + ident + "Error").show("fast"); 
     }else if (regexp !== null) { 
     switch (regexp) { 
      case 'text': 
       var regEx = /^([a-zA-Z]+)$/g; 
       break; 
      case 'number': 
       var regEx = /^([0-9]+)$/g; 
       break; 
      case 'email': 
       var regEx = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/g; 
       break; 
      case 'date': 
       var regEx = /^([123]0|[012][1-9]|31)-(0[1-9]|1[012])-(19[0-9]{2}|2[0-9]{3})$/g; 
       break; 
      case 'alphanum': 
       var regEx = /^([a-zA-Z0-9_\-\.]+)$/g; 
       break; 
      default: 
       break; 
     } 
      if (!regEx.test(ele.val()) && Val.errors == false) { 
       alert('not valid'); 
       Val.errors = true; 
       $("#" + ident + "Error").html("This field is not valid"); 
       $("#" + ident + "Error").show("fast"); 
      } 
     } 
     if (!Val.errors){ 
      $("#" + ident + "Error").hide("fast"); 
     } 
    }, 

    'send': function() { 
     if (!Val.errors) { 
      $('#form').submit(); 
     } 
    } 
} 

Appel de la fonction:

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Form Validations</title> 
<script type="text/javascript" language="JavaScript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 
<script type="text/javascript" language="JavaScript" src="js/gcui.lsat.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    $('#send').click(function(){ 
     checkEmail(); 
     checkUsername(); 
     Val.send(); 
    }); 

    $('#emailID').change(checkEmail()); 
    $('#username').change(checkUsername()); 


    function checkEmail(){ 
     Val.string('email', 1, 'username', 10, 100); 
    } 
    function checkUsername(){ 
     Val.string('username', 1, 'alphanum', 5, 15); 
    } 
}); 
</script> 
</head> 
<body> 
    <form id="form" action=""> 
     <input type="text" id="email" name="email" title="Email" /> 
     <input type="text" id="username" name="username" title="Username" /> 
     <input type="button" id="send" value="Submit" /> 
    </form> 

    Email: <div id="emailError"></div><br/> 
    Username: <div id="usernameError"></div> 
</body> 
</html> 

Répondre

4
$('#emailID').change(checkEmail()); 

moyens "Exécuter checkEmail et passer la valeur de retour à la méthode change"

Vous voulez:

$('#emailID').change(checkEmail); 

Signification "Pa ss la fonction checkEmail la méthode change »

+0

les parenthèses après un nom de fonction appellera la fonction. Ici, il suffit de passer la fonction en paramètre à la méthode de changement. edit: désolé je voulais poster un commentaire sur la question originale – naiquevin

0

Dans votre $ ('# send'). cliquez sur (function() { vous soumettre deux fois. La première fois que vous effectuez la validation et la deuxième fois lorsque le bouton est enfoncé. Ajouter la ligne Return False; juste après le Val.send(); et vous obtenez seulement le forum à soumettre si le formulaire est rempli