2013-07-15 6 views
-2

http://jsfiddle.net/ZKsjr/ Je travaille avec ce script qui est capable de valider correctement un champ de saisie avec style mais j'essaye d'implémenter une nouvelle fonctionnalité pour qu'elle se réinitialise au nom de valeur d'origine (prénom) si des informations incorrectes a été utilisé (var reg =/^ [az, .'-] + $/i;) mais cela doit se produire après qu'ils aient fini d'entrer l'entrée (flou), sauriez-vous comment résoudre ce problème?Validation de saisie de texte

<!DOCTYPE html> 

<html> 

<head> 

    <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
    <title> - jsFiddle demo</title> 
    <script type='text/javascript' src='//code.jquery.com/jquery-1.10.1.js'></script>  
    <link rel="stylesheet" type="text/css" href="/css/result-light.css"> 

<script type='text/javascript'>//<![CDATA[ 
$(window).load(function(){ 
function isfname(text){ 
    var reg = /^[a-z ,.'-]+$/i; 
    return reg.test(text); 
} 

$(".fname").keyup(function(e) { 
    var $test = $(this); 
    if (isfname($test.val())) { 
     $test.css("border-color", "rgb(140, 202, 165)"); 
     $test.css("background-color", "rgb(140, 202, 165)"); 
     $test.css("color", "black"); 

    }else{ 
     $test.css("background-color", "rgb(198, 95, 88)"); 
     $test.css("border-color", "rgb(198, 95, 88)"); 
     $test.css("color", "black"); 
    } 
}).blur(function(e) { 
    $(this).css("background-color", ""); 
    $(this).css("border-color", ""); 
    $(this).css("color", ""); 


}); 




});//]]> 

</script> 


</head> 

<body> 

    <input type="text"id="element_2_2" class="fname" maxlength="255" size="8" " value="First Name" 
onblur="if (this.value == '') {this.value = 'First Name';}" 
onfocus="if (this.value == 'First Name') {this.value = '';}" required/> 


</body> 

</html> 
+0

Oui, avec PHP ou d'un autre script côté serveur. Javascript n'est pas adapté à la validation car il peut être désactivé. Vérifiez [l'avertissement dans cette question] (http://stackoverflow.com/q/3602530/938236) –

+0

Je n'utiliserai pas javascript seul, le problème que j'ai est que la fonction de flou définit la couleur de fond et de bordure c'est la valeur par défaut qui est super mais elle ne réinitialise pas la valeur par défaut si quelqu'un entre des données invalides. –

+1

@Francisco Eh bien, la validation côté client est utile tant que vous la sauvegardez avec la validation côté serveur. :) – doppelgreener

Répondre

0

Vérifiez la valeur du champ dans .blur et définissez la valeur du champ à First Name.

Comme ça ...

.blur(function(e) { 
    $(this).css("background-color", ""); 
    $(this).css("border-color", ""); 
    $(this).css("color", ""); 
    if(!isfname($(this).val())) 
     $(this).val('First Name'); 
}); 

updated jsFiddle Demo

+0

J'essaie de le faire après que l'utilisateur a cliqué sur le champ de saisie, ce que vous faites est de réinitialiser la valeur au prénom alors qu'ils sont encore en train de taper. –

+0

Voir ma mise à jour et jsFiddle. – neo108

+0

vous êtes un individu doué merci pour cela! –