2016-03-29 14 views
0

フォーム入力を検証する関数があり、検証済みの値を返す必要があります。今では、if else句を使用して個々のバリデータを呼び出していますので、私の関数は最初の検証済みフィールド(age)を返しますが、呼び出し関数にはage,lastNamefirstNameを返します。JavaScript関数から複数の値を返す方法

複数の値を返すにはどうすればよいですか?

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

Reactを使用すると、手動でDOMを操作しないでください。 – dandavis

+0

できますか詳しく教えてください –

答えて

0

Javascriptには、複数のオブジェクトを関数から返す概念はありません。代わりに、次の値を含むオブジェクトを構築する必要があります。

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

ロジックを簡略化しようとしました。 else文が必要ない場合は、else文を追加する必要はありません。また、引数として渡す変数で2番目の関数を呼び出す方法も見てください。

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) 
    } 
    } 
関連する問題