J'ai un problème étrange avec la validation que j'écris sur un formulaire. C'est un bouton 'Check Username' à côté d'une entrée. La valeur par défaut d'entrée est le nom d'utilisateur par exemple 'betamax'. Lorsque j'appuie sur 'Check Username', il passe la regex et envoie le nom d'utilisateur au serveur. Le serveur se comporte comme prévu et renvoie '2' pour indiquer au javascript qu'il soumet son propre nom d'utilisateur.Javascript regex renvoyant true .. then false .. then true .. etc
Ensuite, lorsque je clique à nouveau sur le bouton, l'expression régulière échoue. Rien n'est envoyé au serveur évidemment parce que l'expression régulière a échoué. Si j'appuie à nouveau sur le bouton, la regex passe et le nom d'utilisateur est envoyé au serveur.
Je ne peux littéralement pas comprendre ce que cela ferait de le faire! Ça n'a aucun sens!
Edit: Je l'ai testé le problème dans Firefox et Chrome (Mac)
Ceci est mon code:
$j("#username-search").click(checkUserName);
function checkUserName() {
var userName = $j("#username").val();
var invalidUserMsg = 'Invalid username (a-zA-Z0-9 _ - and not - or _ at beginning or end of string)';
var filter = /^[^-_]([a-z0-9-_]{4,20})[^-_]$/gi;
if (filter.test(userName)) {
console.log("Pass")
$j.post(
"/account/profile/username_check/",
{ q: userName },
function(data){
if(data == 0) {
$j("#username-search-results").html("Error searching for username. Try again?");
}
else if(data == 5) {
$j("#username-search-results").html(invalidUserMsg);
}
else if(data == 4) {
$j("#username-search-results").html("Username too short or too long.");
}
else if(data == 2) {
$j("#username-search-results").html("This is already your username.");
}
else if(data == 3) {
$j("#username-search-results").html("This username is taken.");
}
else if(data == 1){
$j("#username-search-results").html("This username is available!");
}
});
} else {
console.log("fail")
$j("#username-search-results").html(invalidUserMsg);
}
return false;
}
Le code HTML:
<input name="username" id="username" value="{{ user.username }}" />
<input type="button" value="Is it taken?" id="username-search">
<span id="username-search-results"></span>
J'ai appris quelque chose de nouveau aujourd'hui! Je n'ai jamais traité avec RegEx dans JS avant. :) – Powerlord
C'est ça. Je comprends normalement/par habitude, mais je suppose que je ne le ferai plus! Merci! – betamax
+1 Je voudrais dire que c'est uniquement pour l'utilisation du mot "regexen", mais c'est une bonne réponse dans tous les aspects ;-) –