2016-05-04 17 views
2

Ich möchte eine Reihe von Fragen an Benutzer in einer Funktion stellen.Javascript prompt() Alternative - Warten auf Benutzerantwort

Wenn ich prompt() benutze, ist es möglich, alle Fragen in einer Funktion zu stellen.

function question(){ 
    var name = prompt("Enter your name"); 
    var age = prompt("Enter your age"); 
} 

Aber wenn ich versuche, Eingabe-Tag zu verwenden, ist dies unmöglich.

function question(){ 
    document.write("Enter your name"); 

    // you can't wait until the user responds. It will simply execute all the lines at once. 

    name = document.getElementById("input").value; 
    document.write("Enter your age"); 
    age = document.getElementById("input").value; 
} 

Wenn ich dies tue, kann ich Input-Tag nicht verwenden, um Fragen an Benutzer in einer Funktion zu stellen. Wie kann ich warten bis der Benutzer antwortet?

Antwort

1

Sie können alle Eingabefelder außer dem ersten deaktiviert lassen. Der zweite kann bei der Benutzerantwort auf den ersten aktiviert werden. Die Zeile der Eingaben wird so weitergehen.

Hier ist eine kleine Demonstration. Bitte beachten Sie, dass dies nur ein Beispielcode ist, der Ihnen das Designmuster zeigt.

<input id="name"></input> <button onClick="getInput()">Ok</button> 

<input id="address"></input> <button onClick="getInput()" disabled>Ok</button> 

und in JS

var name, address; 

functon getInput() { 

    name = document.getelementById("name").value; 
    address = document.getElementById("address").value; 

    if (address !== "") 
     document.getElementById("address").removeAttribute("disabled"); 

} 

Es gibt viele Methoden voraus als dies in JS zur Verfügung steht. Aber wahrscheinlich sollten Sie dieses Muster zuerst studieren.

0

Sie können in einer Funktion nicht zwei verschiedene Werte vom selben Eingang nehmen. Sie sollten eine andere Eingabe oder eine Schaltfläche erstellen, um Variablen zu unterscheiden. Zum Beispiel: ` Geben Sie Ihren Namen Geben Sie Ihr Alter speichern var BSAVE = window.document.getElementById ('BSAVE'); bSave.addEventListener ("klick", Frage);

var newName = window.document.getElementById('iName'); 
    var newAge = window.document.getElementById('iAge'); 

    function question() { 
     name=newName.value; 
     age=newAge.value; 
    } 
</script> 

`

0

document.write() ist HTML nicht zu fragen, Benutzereingaben wie prompt() schreibt. Was Sie brauchen, ist die Eingabevalidierung, bevor der Benutzer das Formular wie

übermittelt