HTML Champ de Formulaire - Comment exiger un format d'entrée
Ce que je veux faire ici, c'est d'exiger que les numéros de téléphone d'être entré dans mon formulaire HTML comme (XXX) XXX-XXXX et que les SS de la saisie des Numéros XXX-XX-XXXX. Thats it.
La seule raison pour laquelle je fais cela est de sorte que la forme de présentation des résultats sont cohérents et faciles d'exportation vers Excel.
On m'a dit d'utiliser du Javascript pour faire cela, mais peut-être que je ne suis pas assez avancé pour comprendre toutes les étapes.
Quelqu'un peut-il svp me pointer dans la bonne direction, ici, en gardant à l'esprit que je suis un débutant?
Wow merci beaucoup Ethan et @suman-bogati! Je suis PRESQUE là maintenant! Le champ de pop un message d'erreur indiquant d'utiliser le bon format de 555-55-5555. C'est génial. Mais peu importe ce que je entrer dans entrer dans ce champ le popup persiste. J'ai essayé 555-55-5555 et aussi 555555555 et ne sont ni acceptées. Voici le code HTML pour que le champ:
<label>
Social Security Number:
<input id="ssn" required pattern="^d{3}-d{2}-d{4}$"
title="Expected pattern is ###-##-####" />
</label>
</div>
<script>$('form').on('submit', function(){
$(this).find('input[name="SocialSecurity"]').each(function(){
$(this).val() = $(this).val().replace(/-/g, '');
});
$(this).find('input[name="ssn"]').each(function(){
$(this).val() = $(this).val().replace(/-/g, '');
});
});</script>
<br />
pattern
attribut spécifie le format. D'autre part, vous ne devriez jamais faire confiance validation côté client, comme il est facilement contournée, vous avez toujours de valider le format du côté du serveur.donc, vous voulez deux modèles doivent être appariés
(XXX) XXX-XXXX
et (XXX) XXX-XXXX
?Susan qui est correct. La modification de la ligne <input name="SocialSecurity" size="9" pattern="(!^\d{3}-\d{2}-\d{4}$" style="width: 141px" type="text" /> Ne fait absolument rien.
De la convivialité point de vue, l'approche est tout faux. Vous devez vous demander: quels formats puis-je traiter de façon significative, et accepter au format que je veux, et comment puis-je aider les utilisateurs à utiliser certains de ces formats? Résoudre le mauvais problème n'est pas de même beaucoup plus facile que de résoudre le problème en question.
OriginalL'auteur JefeTheTechy | 2014-02-08
Vous devez vous connecter pour publier un commentaire.
La façon la plus simple de le faire est simplement à l'aide de plusieurs champs:
Bien que cette approche est certainement facile, ce n'est pas grand. L'utilisateur doit appuyer sur la touche tab ou cliquez sur chaque champ pour entrer les données, et il n'y a rien (autre que le sens commun) de les empêcher d'entrer dans d'autres choses que de chiffres.
J'ai toujours l'impression que, quand il s'agit de la validation, le moins que vous pouvez obtenir à l'utilisateur moyen, le meilleur. Leur permettre d'entrer leur numéro de téléphone dans le format qu'ils aiment, alors vous frotter, enlevant tout mais chiffres. De cette façon, l'utilisateur peut entrer "5555551212" ou "(555) 555-1212", mais la base de données seront toujours de "5555551212".
L'autre chose à considérer est que le HTML5 propose quelques belles des types spécifiques pour les numéros de téléphone (mais pas SSNs). Un navigateur moderne prendra soin de tous la validation de l'entrée et, encore mieux, des appareils mobiles, afficher le pavé numérique de l'ensemble du clavier.
Donné que le meilleur moyen d'afficher votre formulaire est: est-ce
Si l'utilisateur dispose d'un navigateur moderne, cela permettra de gérer l'utilisateur côté de l'entrée de validation pour vous. S'ils ne le font pas, vous devrez utiliser une validation de la bibliothèque ou de polyfill. Il ya toute une liste de HTMl5 de validation de formulaire polyfills ici:
https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills#wiki-web-forms
Donc tout ce qui reste maintenant est de normaliser vos données lorsque vous l'enregistrez dans la base de données.
L'endroit idéal pour le faire pourrait être la fin; il n'a pas dit où votre forme, et ce, bien que, peut-être que vous n'avez pas tout dire sur la façon dont les choses sont traitées sur le back-end. De sorte que vous pouvez le faire dans le front-end à la place. Par exemple, à l'aide de jQuery:
Ce n'est pas une approche parfaite: si vous ne la validation de cette fonction, et la validation échoue, l'utilisateur verra son entrée remplacé par le normalisée versions, ce qui peut être déconcertant.
La meilleure approche serait d'utiliser AJAX et
.serialize
; non seulement vous pouvez avoir un meilleur contrôle sur l'INTERFACE utilisateur, mais vous pouvez faire tout de validation que vous souhaitez. Mais c'est sans doute un peu au-delà de ce que vous devez faire maintenant.Noter que la validation téléphonique est la plus délicate. Le HTML5 téléphone de validation est très permissive, permettant à des personnes d'entrer les numéros de téléphone internationaux, ce qui peut avoir assez compliqué formats. Même les gens dans les etats-unis vont parfois entrer un numéro de téléphone comme "+1 (555) 555-1212", et puis vous avez des 8 chiffres au lieu de 7. Si vous voulez vraiment les limiter à 7 chiffres, vous devez ajouter votre propre validation:
Cela permettra de couvrir toutes les variations courantes des gens utilisent (temps, espaces, tirets, parenthèses), et permettent encore à seulement 7 chiffres des numéros de téléphone aux usa.
Voici un jsfiddle démontrant la validation HTML5 et normalisation:
http://jsfiddle.net/Cj7UG/1/
J'espère que cela aide!
Il y avait une faute de frappe dans mon SSN modèle (j'ai été à l'aide de trois chiffres pour le dernier bit au lieu de quatre). J'ai corrigé et ajouté un jsfiddle démontrant tout cela fonctionne: jsfiddle.net/Cj7UG/1
OriginalL'auteur Ethan Brown
Utiliser ce motif si vous voulez deux modèles doivent être mis en correspondance comme demandé dans la question.
DÉMO
OriginalL'auteur Suman Bogati
Ici est une solution complète à l'aide de jquery et jquery outils validator:
regex modèle qui permettrait de gérer les deux cas est :
HTML:
Cliquez ici pour la démo sur jsfiddle
OriginalL'auteur Goran.it
utiliser pouvez utiliser qqch comme ceci:
Je l'ai testé en ff
OriginalL'auteur scripter