Cette partie va bien (je pris la liberté de fixer l'empreinte):
function checknewaccount(){
if(emailvalid()&& checkname() && passwordcheck())
{
return true;
}
else{
return false;
}
}
Bien que vous puissiez l'améliorer:
function checknewaccount(){
return emailvalid() && checkname() && passwordcheck();
}
Cette partie est une erreur de syntaxe (pour le moins):
function emailvalid(), checkname(), passwordcheck(){
if(condition){
return true;}
else{return false;}
Si ce n'est pas une réelle citation de votre code, vous devrez mettre à jour yo question (bien que je ne sois pas ici pour mettre à jour cette réponse). Il ne sert pas à grand-chose de poser des questions sur le code et de citer ensuite du pseudo-code dans la question. (. À tout le moins, le pseudo-code manque le }
final)
Le même genre de chose est vrai pour vos fonctions sous la forme:
function emailvalid()
{
if(email condition)
{
return true;
}
else {
return false;
}
}
C'est bien (en supposant que email condition
est encore psuedocode), mais il n'y a pas besoin pour le if
:
function emailvalid()
{
return email condition;
}
En termes de « rien ne se passe, » assurez-vous que vous avez des outils de débogage, vous pouvez nous e. Chrome a intégré les Outils de développement, appuyez simplement sur Ctrl + Maj + I. Pour Firefox, vous pouvez installer l'excellent Firebug. Les versions récentes d'Internet Explorer intègrent également des outils de développement (pour les anciennes versions, vous pouvez télécharger une version gratuite de Visual Studio pouvant être connectée au navigateur). N'importe lequel d'entre eux vous dira à propos de la syntaxe et d'autres erreurs, vous permettra de parcourir votre déclaration de code par déclaration, etc., ce qui est essentiel pour comprendre ce qui se passe.
Voici une version rapide de ce que je pense que vous essayez de faire. Je ne le ferais pas de cette façon, mais je l'ai fait les changements minimes pour le faire fonctionner:
HTML:
<form action="http://www.google.com/search"
method="GET" target="_blank"
onsubmit="return checknewaccount()">
<input type="text" id="email" name='q' onblur="emailvalid()">
<input type="text" id="username" onblur="checkname()" >
<input type="password" id="password" onkeyup="passwordcheck()">
<input type="submit" value="New">
</form>
Remarques sur ce point:
- Comme Basiclife pointed out, votre
form
le code a des problèmes. Ceux-ci sont fixés ci-dessus.
- Ci-dessus j'ai utilisé
action="http://www.google.com/search"
mais bien sûr pour vous ce serait action="accountcode.php"
(ou du moins, je pense que ce serait le cas).
- Utilisez le
onsubmit
pour le gestionnaire de soumission de formulaire, et non onclick
sur le bouton Envoyer. Vous ne pouvez pas annuler une soumission de formulaire de façon fiable via le bouton de soumission onclick
.
- En
onsubmit
, assurez-vous d'utiliser return
— par exemple, onsubmit="return checknewaccount()"
, pas onsubmit="checknewaccount()"
— parce que nous voulons nous assurer que les choses de l'événement voit la valeur de retour. Nous ne nous soucions pas si la substance de l'événement ne voit pas la valeur de retour de nos autres contrôles (onblur="emailvalid()"
), mais si nous l'avons fait, nous aurions besoin de return
là aussi. Un seul des champs ci-dessus a un attribut name
; aucun de vous ne le fait. Seuls les champs avec name
attributs sont soumis avec des formulaires. J'ai seulement utilisé un name
pour mon exemple parce que je veux seulement soumettre un champ à Google, mais pour vos buts, vous allez vouloir name
attributs sur chacun des trois champs. This brief article a une discussion de id
par rapport à name
et à quoi ils servent. Vous voulez parfois les deux.
- J'ai mis les attributs en minuscules, ce qui est la meilleure pratique (et nécessaire si vous voulez utiliser XHTML).
- Cependant, j'ai supprimé le
/
des extrémités du inputs
. C'est un peu hors sujet, mais au niveau apparent où vous travaillez, vous ne voulez pas essayer d'utiliser XHTML, utilisez HTML. L'utilisation correcte de XHTML est techniquement difficile, à la fois dans la création et la configuration du serveur, et même dans ce cas, vous devez le servir comme tag-soupe à IE ou il ne le traitera pas correctement. XHTML a sa place, mais dans la grande majorité des cas, il n'y a aucune raison de l'utiliser.
- Avec ce qui précède combiné avec le JavaScript ci-dessous, il n'y a aucun but que ce soit pour les gestionnaires sur les champs individuels. Je les ai laissés, cependant, parce que je suppose que vous faites plus que les contrôles ci-dessous — il y a un exemple plus bas montrant ces gestionnaires qui font quelque chose d'utile.
JavaScript:
function checknewaccount() {
return emailvalid() && checkname() && passwordcheck();
}
function emailvalid() {
var element;
// Get the email element
element = document.getElementById('email');
// Obviously not a real check, just do whatever your condition is
return element.value.indexOf('@') > 0;
}
function checkname() {
var element;
// Get the username element
element = document.getElementById('username');
// Obviously not a real check, just do whatever your condition is
return element.value.length > 0;
}
function passwordcheck() {
var element;
// Get the username element
element = document.getElementById('password');
// Obviously not a real check, just do whatever your condition is
return element.value.length > 0;
}
Live copy
Les choses changent légèrement si le emailvalid
, et. Al., Les fonctions vont faire quelque chose pour l'utilisateur que les champs ne sont pas valides, par exemple en mettant en valeur leurs étiquettes:
HTML:
<form action="http://www.google.com/search"
method="GET" target="_blank"
onsubmit="return checknewaccount()">
<label>Email:
<input type="text" id="email" name='q' onblur="emailvalid()"></label>
<br><label>Username:
<input type="text" id="username" onblur="checkname()" ></label>
<br><label>Password:
<input type="password" id="password" onkeyup="passwordcheck()"/></label>
<br><input type="submit" value="New">
</form>
JavaScript:
function checknewaccount() {
var result;
// Because we're actually doing something in each of the
// three functions below, on form validation we want to
// call *all* of them, even if the first one fails, so
// they each color their field accordingly. So instead
// of a one-liner with && as in the previous example,
// we ensure we do call each of them:
result = emailvalid();
result = checkname() && result;
result = passwordcheck() && result;
return result;
}
function emailvalid() {
var element, result;
// Get the email element
element = document.getElementById('email');
// Obviously not a real check, just do whatever your condition is
result = element.value.indexOf('@') > 0;
// Update our label and return the result
updateLabel(element, result);
return result;
}
function checkname() {
var element, result;
// Get the username element
element = document.getElementById('username');
// Obviously not a real check, just do whatever your condition is
result = element.value.length > 0;
// Update our label and return the result
updateLabel(element, result);
return result;
}
function passwordcheck() {
var element, result;
// Get the username element
element = document.getElementById('password');
// Obviously not a real check, just do whatever your condition is
result = element.value.length > 0;
// Update our label and return the result
updateLabel(element, result);
return result;
}
function updateLabel(node, valid) {
while (node && node.tagName !== "LABEL") {
node = node.parentNode;
}
if (node) {
node.style.color = valid ? "" : "red";
}
}
Live copy
Ok désolé, je nettoyais mon code dans la question et je l'espère plus de sens à tout le monde. Désolé à ce sujet plus tôt. – Siriss
petit conseil si vous voulez marquer code 'snippets' dans les commentaires, utilisez un backtick' (à gauche de 1 sur kbd) avant et après le code – Basic