Ergebnis der Abbrechen Funktion bei window.prompt
Bernd
- javascript
Hallo zusammen,
ich habe folgendes Script:
<script type=text/javascript>
Name = window.prompt("Dein Name ist:", "(Dein Name)");
while (Name == "(Dein Name)")
{
window.alert("Gib bitte deinen Namen ein");
Name = window.prompt("Dein Name ist:", "(Dein Name)");
}
window.alert("Hallo " + Name);
</script>
Also: Der Nutzer bekommt ein .prompt Feld zu Gesicht. Voreingestellt ist " (Dein Name) " - könnte aber auch leer gelassen werden.
Nun sollte der Nutzer dort seinen Namen eingeben, damit ich ihn mithilfe der Variablen wiederverwenden kann. Allerdings kann der Nutzer auch einfach auf 'Abbrechen' klicken.. Das führt dazu, dass die Ausgabe
"Hallo null"
erscheint.
Ich kenne leider keine Möglichkeit, dass der Nutzer -wenn er auf 'Abbrechen' klickt- doch dazu gebracht wird bei der Namensaufforderung einen Namen einzugeben (mir ist nur wichtig, dass der Nutzer irgendetwas eingibt, das ich dann als Namen verwenden kann, statt dann "null" oder ähnliches angegeben wird)
Wisst ihr wie man das 'Abbrechen' überbrücken/den Wert, den die Variable 'Name' dann annimmt, beeinflussen kann?
Mahlzeit,
Wisst ihr wie man das 'Abbrechen' überbrücken/den Wert, den die Variable 'Name' dann annimmt, beeinflussen kann?
Wieso prüfst du nicht Name auf null und weisst dann selbst z.B. "Gast" zu?
Hallo,
Prüfe, ob Name null ist:
var userName = '';
var question = 'Bitte gib deinen Namen ein:'
var placeholder = '(Dein Name)';
while (userName === '' || userName === null || userName === placeholder) {
userName = window.prompt(question, placeholder);
}
Wisst ihr wie man das 'Abbrechen' überbrücken/den Wert, den die Variable 'Name' dann annimmt, beeinflussen kann?
Wieso willst du das tun? Der Rückgabewert null ist gut dazu geeignet, um ihn von anderen Werten zu unterscheiden.
Wie auch immer, man kann den Wert nicht beeinflussen und auch nicht den Abbrechen-Knopf verschwinden lassen.
Mathias
Hallo,
Prüfe, ob Name null ist:
var userName = '';
var question = 'Bitte gib deinen Namen ein:'
var placeholder = '(Dein Name)';
while (userName === '' || userName === null || userName === placeholder) {
userName = window.prompt(question, placeholder);
}
Zuerst einmal vielen Dank dafür!
Klappt damit genau so wie ich es wollte.
Aber eine Frage hätte ich noch: Ich kenne nur
Name = " ";
oder
Name == " ";
wofür stehen die 3 '='?
Name === " ";
Om nah hoo pez nyeetz, Bernd!
wofür stehen die 3 '='?
var x = '42';
(x == 42) // true;
(x === 42) // false;
Es gibt Programmiersprachen, da werden die Variablentypen nach Bedarf hin und her umgewandelt. Solche Sprachen nennt man lose typisiert.
Der String '42' ist gleich der Zahl 42. Das bietet Vorteile, weil man zum Beispiel die Umwandlung von Werten in Inputfeldern, die immer Zeichenketten sind, nicht von Hand machen muss.
Aber der String '42' ist nicht die Zahl 42.
Matthias
Hach ja...
Das Script bringt den Nutzer nun dazu, dass er die Eingabeaufforderung nicht los wird ohne etwas zu schreiben.
Es ist zwar nicht mein Problem wenn er irgendeinen Buchstabensalat eintippt aber wie ich grade bemerkt habe kann man die Eingabeaufforderung mit einem 'Leerzeichen' "überlisten". Das macht den Sinn dann wieder zu Nichte: "Hallo "
Nun könnte ich zwar auch folgendes Schreiben:
while (Name == "" || Name == " " || Name == " " || Name == " " || Name == null)
aber das hat doch nun wenig Sinn..
Gibt es eine Möglichkeit die maximale Eingabelänge festzulegen? Oder gibt es eine elegante Möglichkeit diesen 'Leerzeichen' vorzubeugen?
Bernd
Om nah hoo pez nyeetz, Bernd!
Gibt es eine Möglichkeit die maximale Eingabelänge festzulegen? Oder gibt es eine elegante Möglichkeit diesen 'Leerzeichen' vorzubeugen?
Ja, und zwar für moderne Browser mit dem pattern-Attribut.
Mit Javascript kannst du die Eigenschaft http://de.selfhtml.org/javascript/objekte/string.htm#length@title=length nutzen, aber auch dann kann man „ “ eingeben. Du könntest in einer Schleife mit der Methode http://de.selfhtml.org/javascript/objekte/string.htm#substring@title=substr() Leerzeichen am Anfang und am Ende der Zeichenkette entfernen.
Matthias
Mit Javascript kannst du die Eigenschaft http://de.selfhtml.org/javascript/objekte/string.htm#length@title=length nutzen, aber auch dann kann man „ “ eingeben. Du könntest in einer Schleife mit der Methode http://de.selfhtml.org/javascript/objekte/string.htm#substring@title=substr() Leerzeichen am Anfang und am Ende der Zeichenkette entfernen.
Matthias
Mhh.. hört sich gut an, allerdings weiß ich nicht wie ich das mit der Schleife machen soll.. Das Javascript müsste doch dann zwischen Buchstaben und Leerzeichen unterscheiden können - oder wie glaubst du könnte es funktionieren?
Nach deinem Ansatz würde ich zuerst eine .length einbauen und dannach mit substr() die Buchstabenkette von den Leerzeichen trennen, richtig?
Bernd
Hallo,
Hach ja...
Das Script bringt den Nutzer nun dazu, dass er die Eingabeaufforderung nicht los wird ohne etwas zu schreiben.
Ich dachte, das wolltest du?
Es ist zwar nicht mein Problem wenn er irgendeinen Buchstabensalat eintippt aber wie ich grade bemerkt habe kann man die Eingabeaufforderung mit einem 'Leerzeichen' "überlisten".
So etwas lässt sich du mit <http://de.selfhtml.org/javascript/objekte/regexp.htm@title=Regulären Ausdrücken> prüfen. Du kannst z.B. prüfen, ob der String nur aus Whitespace besteht (Beispiel: /^\s+$/). Oder den Whitespace vorne und hinten entfernen (oft trim genannt) und dann die Länge prüfen.
Gibt es eine Möglichkeit die maximale Eingabelänge festzulegen?
Wie gesagt, Strings haben eine Länge, die du prüfen kannst.
Mathias
So etwas lässt sich du mit <http://de.selfhtml.org/javascript/objekte/regexp.htm@title=Regulären Ausdrücken> prüfen. Du kannst z.B. prüfen, ob der String nur aus Whitespace besteht (Beispiel: /^\s+$/). Oder den Whitespace vorne und hinten entfernen (oft trim genannt) und dann die Länge prüfen.
Mathias
Genau sowas bräuchte ich..
Meine Überlegung wäre mit replace() zu arbeiten. Dies wäre für mich kein Problem, wenn ich den Namen mit input ~~ abfragen würde.. Bei meinem Script wollte ich eigentlich den Namen mit window.prompt abfragen. Die Frage, die sich mir nun stellt, lautet: Wie kann ich mit replace() - oder was auch immer - an der Nutzereingabe bei window.prompt rumbasteln? Ich hoffe da weiß jemand Rat.
Bernd
Hi,
Meine Überlegung wäre mit replace() zu arbeiten. Dies wäre für mich kein Problem, wenn ich den Namen mit input ~~ abfragen würde.. Bei meinem Script wollte ich eigentlich den Namen mit window.prompt abfragen. Die Frage, die sich mir nun stellt, lautet: Wie kann ich mit replace() - oder was auch immer - an der Nutzereingabe bei window.prompt rumbasteln? Ich hoffe da weiß jemand Rat.
Warum meinst Du, daß es einen Unterschied macht, wie der String eingegeben wurde?
Du hast in beiden Fällen (input/prompt) einen String vorliegen (einmal per .value aus dem input geholt, das andere Mal aus dem return-Wert von window.prompt).
cu,
Andreas