2017-05-03 17 views
0

フォーム情報を格納するために使用しているオブジェクトから情報を取得できました。フィールドに情報を入力せずに送信を開始しようとしましたが、すべての情報を正しく入力すると表示されません成功すると同じものを得る?JavaScriptのハンドラ関数から戻り値を取得するにはどうすればよいですか?

 var theForm = document.getElementsByTagName('form')[0]; 
     var firstNameInput = document.getElementById('firstNameInput'); 
     var lastNameInput = document.getElementById('lastNameInput'); 
     var emailInput = document.getElementById('emailInput'); 
     var stateInput = document.getElementById('stateInput'); 

     var theButton = document.querySelector('input[type=submit]'); 

     // Wire the form's submit event to a callback 
     theForm.addEventListener('submit', validate); 

     function validate(e) { 

      // Error tracking variable 
      var error = false; 

      // Do validations 
      var emailPattern = /^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 

      var formData = { 
       'firstName': null, 
       'lastName': null, 
       'email': null, 
       'stateInput': null 
      } 

      if ((firstNameInput.value == '') || (firstNameInput.value == null)) { 
       firstNameInput.classList.add('invalid-input'); 
       firstNameInput.nextElementSibling.style.display = 'block'; 
       firstNameInput.nextElementSibling.innerHTML = 'Not valid!'; 
       error = true; 
      } 

      if ((lastNameInput.value == '') || (lastNameInput.value == null)) { 
       lastNameInput.classList.add('invalid-input'); 
       lastNameInput.nextElementSibling.style.display = 'block'; 
       lastNameInput.nextElementSibling.innerHTML = 'Not valid!'; 
       error = true; 
      } 

      if (!emailPattern.test(emailInput.value)) { 
       emailInput.classList.add('invalid-input'); 
       emailInput.nextElementSibling.style.display = 'block'; 
       emailInput.nextElementSibling.innerHTML = 'Please enter valid email address!'; 
       error = true; 
      } 

      if ((stateInput.value == 'selectstate')) { 
       stateInput.classList.add('invalid-input'); 
       stateInput.nextElementSibling.style.display = 'block'; 
       stateInput.nextElementSibling.innerHTML = 'Not valid!'; 
       error = true; 
      } 

      // If error, stop the event 
      if (error) { 
       e.preventDefault(); 
       e.stopPropagation(); 
       console.log('There is no data from the form: '); 
       for (var prop in formData) { 
        console.log(prop + ' : ' + formData[prop]); 
       } 
       return false; 

      } else { 

       formData['firstName'] = firstNameInput.value; 
       formData['lastName'] = lastNameInput.value; 
       formData['email'] = emailInput.value; 
       formData['stateInput'] = stateInput.value; 
       console.log('There is now data from the form: :) '); 
       for (var prop in formData) { 
        console.log(prop + ' : ' + formData[prop]); 
       } 
       return true; 
      } 
     } 

私はこれを試してみました:

var result = theForm.addEventListener('submit', validate); 

    if (result) { 
    console.log(result); 
    } 

任意の助けをいただければ幸いです!

+3

https://www.w3schools.com/jsref/met_element_addeventlistener.asp

あなたは、イベントリスナーが正しくインストールされているかどうかを知りたい場合は、関数が存在するかどうかを確認する必要がありますリスナーはインストールされますが、実際にフォームを送信するまでリスナーは実行されません。したがって、リスナーのインストールが正常に完了したかどうかだけを知ることができます。 –

+1

戻り値はありません。 [コールバックはまだ実行されていません](http://stackoverflow.com/q/23667086/1048572) – Bergi

+0

基本的に私はコンソールに表示されるフィードバックのいくつかの種類を取得したい、後で使用される可能性がありますビュー? –

答えて

0

w3schools.comによると、この関数addEventListener()は何も返しません。あなたは `theForm.addEventListener`だけでは認識しておく必要があり

if(theForm.addEventListener){ 
    theForm.addEventListener('submit', validate); 
}else{ 
    theForm.attachEvent('onclick', validate); 
} 
+0

本質的に...私は上記のコメントで述べたように、データを表示するために関数内でそのオブジェクトを使用したいと思います。後でそれをconsole.logに使用するか、テンプレート/ビューで後で使用します。 Lanにお返事ありがとう! –

関連する問題