2016-12-16 10 views
0

어떻게 validEmailscheckform()으로 반환 할 수 있습니까? 지금은 undefined입니다.FileReader() 반환 값이 정의되지 않음

<script type="text/javascript"> 
function checkfile(form) { 

    var reader = new FileReader(); 

    reader.onload = function(e) { 
    var emails = e.target.result; 
    var validEmails = parseEmails(emails); 
    return validEmails; 
    }; 

    var formFiles = form.files[0]; 
    reader.readAsText(formFiles); 

    function parseEmails(emails) { 
    var obj = Papa.parse(emails, { skipEmptyLines: true }); 

    var valid = 1; 
    $.each(obj.data, function(i, v) { 
     var email = v[0].trim(); 
     valid = validEmail(email); 
    }); 

    return valid; 
    }; 

    function validEmail(email) { 
    var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
    return regex.test(email); 
    }; 
} 

function checkform(form) { 
    console.log(checkfile(document.getElementById('recipient_csv'))); 
} 
</script> 

<form method="post" action="/" enctype="multipart/form-data" onSubmit="return checkform(this);"> 

    <input id="recipient_csv" type="file" name="recipient_csv" /> 

</form> 

답변

0

validEmails 변수는 onload 기능의 범위 내에 있습니다. 함수를 정의하거나 "var"를 제거하십시오 (전역 변수가됩니다).

자바 스크립트의 변수 범위를 확인해야합니다 http://www.w3schools.com/js/js_scope.asp

+0

글로벌 변수를 피하는 방법은 무엇입니까? 단순히 값을 반환 할 수없는 이유는 무엇입니까? 범위가 반환 될 수 없다는 의미는 아닙니다. – Zelphir