2016-03-29 8 views
0

Ich habe eine Funktion, die Formulareingabe überprüft, und ich muss die validierten Werte zurückgeben. Im Moment verwende ich if else Klauseln, um einzelne Validatoren aufzurufen, so dass meine Funktion nur das erste validierte Feld (age) zurückgibt, aber ich möchte age, lastName und firstName an die aufrufende Funktion zurückgeben.Wie mehrere Werte von JavaScript-Funktion zurückgegeben werden

Wie kann ich mehrere Werte erhalten, die zurückgegeben werden?

validationForm(numberOfPassengers){ 
    for (let i=0; i < numberOfPassengers; i++) { 
     let firstName = ReactDOM.findDOMNode(this.refs['firstName'+typeOfPassenger+i]).value; 
     let lastName = ReactDOM.findDOMNode(this.refs["lastName"+typeOfPassenger+i]).value 
     let age = ReactDOM.findDOMNode(this.refs['age'+typeOfPassenger+i]).value; 
     let regex = /^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/; 
     let resultFirstName = firstName.match(regex); 
     let resultLastName = firstName.match(regex); 
     if(age <= 0){ 
     ('.age-alignment').addClass('error-border'); 
     }else{ 
     return age; 
     }; 
     if(resultFirstName){ 
     return firstName; 
     }else{ 
     ('.first-name').addClass('error-border'); 
     }; 
     if(resultLastName){ 
     return lastName; 
     }else{ 
     ('.last-name').addClass('error-border'); 
     }; 
    } 
    } 
+0

manipulieren Sie das DOM nicht manuell, wenn Sie React verwenden. – dandavis

+0

können Sie bitte erarbeiten –

Antwort

0

Javascript hat keine Idee, mehrere Objekte aus einer Funktion zurückzugeben. Stattdessen müssen Sie ein Objekt aufbauen, das selbst diese Werte enthält:

var returnObject = {}; 
    if(age <= 0){ 
    ('.age-alignment').addClass('error-border'); 
    }else{ 
    returnObject.age = age; 
    }; 
    if(resultFirstName){ 
    returnObject.firstName = firstName; 
    }else{ 
    ('.first-name').addClass('error-border'); 
    }; 
    if(resultLastName){ 
    returnObject.lastName = lastName; 
    }else{ 
    ('.last-name').addClass('error-border'); 
    }; 
    return returnObject; 
0

Ich habe versucht, die Logik zu vereinfachen. Es gibt auch keinen Grund, eine else-Anweisung hinzuzufügen, wenn sie nicht benötigt wird. Sehen Sie auch, wie ich eine zweite Funktion mit den Variablen anrufe, die Sie als Argumente übergeben wollen.

function other_function(age,last_name, first_name){ 
     console.log("I have access to all of these:",age,last_name,first_name) 
    } 

validationForm(numberOfPassengers){ 
    for (let i=0; i < numberOfPassengers; i++) { 
     let firstName = ReactDOM.findDOMNode(this.refs['firstName'+typeOfPassenger+i]).value; 
     let lastName = ReactDOM.findDOMNode(this.refs["lastName"+typeOfPassenger+i]).value 
     let age = ReactDOM.findDOMNode(this.refs['age'+typeOfPassenger+i]).value; 
     let regex = /^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/; 
     let resultFirstName = firstName.match(regex); 
     let resultLastName = firstName.match(regex); 
     if(age <= 0){ 
     ('.age-alignment').addClass('error-border'); 
     } 
     if(!resultFirstName){ 
     ('.first-name').addClass('error-border'); 
     }; 
     if(!resultLastName){ 
     ('.last-name').addClass('error-border'); 
     } 
     return other_function(age,first_name,last_name) 
    } 
    } 
Verwandte Themen