Überprüfen, ob mehrere Funktionen wahr sind, dann tun Sie etwas
Ich bin stecken geblieben auf das, was ich dachte, war eine einfache PEBCAK Fehler auf meinem Teil. Ich bin versucht, um zu überprüfen, alle meine Funktionen wahr sind, bevor ich ein Formular Absenden, kann aber nicht die Figur für das Leben von mir, was falsch ist. Unten ist mein javascript code:
function checknewaccount(){
if(emailvalid()&& checkname() && passwordcheck())
{
return true;
}
else{
return false;
}
}
function emailvalid()
{
if(email condition)
{
return true;
}
else {
return false;
}
}
function checkname())
{
if(name condition)
{
return true;
}
else {
return false;
}
}
function passwordcheck(){
if(password condition)
{
return true;
}
else {
return false;
}
}
html unter:
<form id="newaccount" name="newaccount" method="post" onSubmit="accountcode.php">
<input type="text" id="email" onBlur="emailvalid()"/>
<input type="text" id="username" onBlur="checkname()" />
<input type="password" id="password" onkeyup="passwordcheck()"/>
<input type="submit" value="New" onClick="return checknewaccount()"/>
</form>
Wenn ich auf "Neues, nichts passiert, und ich weiß, dass die accountcode.php nicht ausgeführt wird, weil nichts passiert auf der Datenbank Ende und es werden keine Fehler gemeldet.
Zusammenfassend, meine Frage ist, wie checknewaccount() funktioniert nicht? Hat es etwas damit zu tun, wie rufe ich Sie?
Ich bin neu in javascript also, wenn ich jetzt völlig off auf meiner Umsetzung, ich entschuldige mich. Vielen Dank für die Hilfe!
unser Tipp, wenn Sie möchten, zu markieren
code snippets
in den Kommentaren, verwenden Sie ein "backtick" ` (Links von 1 auf kbd) vor und nach dem codeInformationsquelleAutor Siriss | 2010-12-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
du hast die Formular-syntax falsch - onsubmit = der name der js Funktion aufrufen, action = die url...
Vollständig getesteten code:
Form im obigen code wird nur Einreichen, wenn die textbox einen Wert von test
Etwas bessere Umsetzung wäre:
Da dies zumindest sagt der Benutzer das Formular nicht eingereicht. Noch besser wäre es, um dem Benutzer eine detailliertere Grund, warum, aber über den Rahmen dieser Frage...
alert()
Befehle in deine JS zu arbeiten, was läuft (oder verwenden Sie das firebug-addon im firefox eine vollständige JS-debugger)auch vorschlagen, dass Sie beginnen mit alert () - Befehle in deinem JS..." Gott Nein, ist es nicht mehr beliebiger Entschuldigung für debug-über-alert. Benutze Firebug (wie Sie bereits erwähnt), oder Chrome Dev Tools oder Visual Studio, oder ... 🙂 +1 für das Formular, was ich nicht auch auf der HTML.
das wird nicht funktionieren, da meine Javascript-Funktion checknewaccount() nicht aufrufen, die accountcode.php Datei. Ich möchte den javascript-bestätigen Sie alle Felder korrekt aus und schicken Sie das Formular an accountcode.php. Ich benutzte Rückkehr checknewaccount() auf den submit-button, so würde es nur reichen, wenn checknewaccount gibt true zurück. Ich habe diese in der Vergangenheit mit so etwas wie das folgende....
Crowder ich bin damit einverstanden, dass das verlassen eine Warnmeldung in der Produktions-code ist eine riesige no-no, - und in meinem eigenen code habe ich immer ein div mit
id="log"
und eindebug(message)
Funktion, welche Ausgaben zu - ermöglicht mir zu sehen, eine schöne Logbuch der Ereignisse/Befehle - aber als quick-and-dirty-Methode zu sehen, wenn eine Funktion aufgerufen wird, ich denke immer noch, es ist nützlich. Ich bestätige, dass dies ein kontroverser SichtIst das Formular nur abschicken, wenn die Methode verwiesen, die in der
onsubmit=""
gibt true zurück, - so ist dies genau der richtige Ort, um die Validierung. Wenn die Methode false zurückgibt, geschieht nichts.InformationsquelleAutor Basic
Dieser Teil ist in Ordnung (ich nahm mir die Freiheit der Festsetzung der Einrückung):
Obwohl man könnte es verbessern:
Dieser Teil ist ein syntax-Fehler (um es milde auszudrücken):Wenn das nicht ein echtes Zitat aus Ihrem code, müssen Sie aktualisieren Sie Ihre Frage (auch wenn ich möglicherweise nicht hier, dann aktualisieren diese Antwort). Nicht viel Sinn, zu Fragen, code und dann zitieren pseudo-code in Frage. (Zumindest den pseudo-code fehlt die Letzte}
.)Die gleiche Art von Sache, die wahr ist für Ihre Funktionen in der form:
Das ist in Ordnung (vorausgesetzt, dass
email condition
ist noch psuedocode), aber es gibt keine Notwendigkeit für dieif
:Im Sinne von "nichts passiert," stellen Sie sicher, dass debugging-tools, die Sie verwenden können. Chrome Dev-Tools gebaut, einfach die Tastenkombination Strg+Umschalt+I Für Firefox, installieren Sie die ausgezeichnete Firebug. Neuere Versionen des IE haben die dev-tools, die in diese integriert sind (für ältere Versionen können Sie eine Kostenlose version von Visual Studio, können plug-in den browser). Alle diese Ihnen sagen, über syntax-und andere Fehler, lass Sie gehen Sie durch Ihr code-Anweisung-by-Anweisung, etc., das ist entscheidend, um herauszufinden, was passiert ist.
Hier ist ein schoss-off-version von dem, was ich denke, Sie versuchen zu tun. Ich würde das so nicht, aber ich habe nur minimale änderungen machen, damit es funktioniert:
HTML:
Hinweise:
form
code Probleme hat. Diese sind fest über.action="http://www.google.com/search"
aber natürlich auch für Sie wäre esaction="accountcode.php"
(oder zumindest ich denke, es würde).onsubmit
für die Formular-handler, nichtonclick
auf den Absenden-button. Sie können nicht Abbrechen eines Formulars zuverlässig cross-Browser über das submit-Schaltflächeonclick
.onsubmit
, stellen Sie sicher, dass Siereturn
— z.B.onsubmit="return checknewaccount()"
, nichtonsubmit="checknewaccount()"
— denn wir wollen sicherstellen, dass die event-Sachen sieht die Rückkehr Wert. Wir kümmern uns nicht, wenn die event-Sachen nicht sehen, die Rückkehr Wert unserer anderen Prüfungen (onblur="emailvalid()"
), aber wenn wir es täten, müsstenreturn
s dort auch.name
Attribut; keiner von Euch tun. Nur Felder mitname
Attribute vorgelegt bekommen mit Formularen. Ich habe nur eine einzigename
für mein Beispiel, da ich nur senden will ein Feld für Google, sondern für Ihre Zwecke, Sie gehen zu wollenname
Attribute auf allen drei Feldern. Dieser kurze Artikel hat eine Diskussionid
vs.name
und was Sie sind für. Sie wollen manchmal beide./
von den enden derinputs
. Das ist ein bisschen off-topic, aber bei der scheinbaren Ebene, die Sie arbeiten auf, die Sie nicht wollen, um zu versuchen, zu verwenden, XHTML, HTML zu verwenden. Mit XHTML korrekt ist technisch schwierig, sowohl im authoring-und server-Konfiguration, und selbst dann haben Sie es dienen als tag-soup zu IE oder es wird nicht behandeln, es richtig. XHTML hat seinen Platz, aber in der überwiegenden Mehrheit der Fälle es gibt keinen Grund, es zu benutzen.JavaScript:
Live-Kopie
Dinge etwas ändern, wenn die
emailvalid
, et. al., Funktionen gehen, etwas zu tun, damit der Benutzer wissen, die Felder ungültig sind, wie die Hervorhebung des labels:HTML:
JavaScript:
Live-Kopie
Ich vermute, Sie sind nicht - die "Bedingung" wird in den einzelnen variieren.
Ja, das ist meine Vermutung, aber...
Crowder: Rückkehr emailvalid()&& checkname() && passwordcheck(); war erfolgreich! Ich danke Ihnen sehr!
Interessant - die syntax, Die zur Verfügung gestellt von TJ ist kurz und bündig und elegant, aber funktional identisch zu Ihren eigenen code - es sei denn, ich bin fehlt etwas ?
InformationsquelleAutor T.J. Crowder