2010-11-06 34 views
0

Je sais comment valider un champ pour les valeurs numériques, mais comment pouvez-vous valider le champ si des caractères non valides ont été collés dans le champ. Souvent, nous avons un champ numérique, puis un bouton d'action, et le champ numérique ne peut pas déclencher un événement de flou lorsque le bouton d'action est cliqué. Comment pouvez-vous forcer (re) valider dans ce cas? Le faites-vous à nouveau dans l'événement click du bouton d'action, ou y a-t-il une solution plus élégante?jQuery Valider numérique après collage

Répondre

2

j'ai utilisé ce genre de validation .... vérifie le collé texte et s'il contient des alphabets, affiche une erreur pour l'utilisateur, puis efface la boîte après le délai pour que l'utilisateur vérifie le texte et apporte les modifications appropriées.

$('#txtbox').on('paste', function (e) { 
    var $this = $(this); 
    setTimeout(function (e) { 
     if (($this.val()).match(/[^0-9]/g)) 
     { 
      $("#errormsg").html("Only Numerical Characters allowed").show().delay(2500).fadeOut("slow");      
      setTimeout(function (e) { 
       $this.val(null); 
      },2500); 
     }     
    }, 5); 
}); 
+0

La réponse de Darin est une bonne pratique, mais j'accepterai votre réponse car elle s'applique spécifiquement au problème du collage. LOL –

+0

Désolé d'être en retard, j'ai utilisé cette chose récemment dans l'une de mes applications ... la pensée peut être que cela pourrait aider d'autres .... –

3

Pas vraiment répondu à votre question sur le collage mais en offrant une alternative: vous pouvez vous abonner au gestionnaire submit du formulaire et y effectuer la validation. Encore plus élégante est d'utiliser la jquery validation plugin qui fera le travail de souscrire pour vous afin que vous ne devez définir les règles et les messages d'erreur:

$(function() { 
    $('#myform').validate({ 
     rules: { 
      someFieldName: { 
       required: true, 
       number: true 
      } 
     }, 
     messages: { 
      someFieldName: { 
       required: 'please enter a value', 
       number: 'please enter a valid number' 
      } 
     } 
    }); 
});