2016-12-16 9 views
0

var 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"を削除して(グローバル変数にする)

あなたはグローバル変数を回避するために、どのようにJavaScriptのhttp://www.w3schools.com/js/js_scope.asp

+0

の変数のスコープを確認してください?単に値を返すことができないのはなぜですか?スコープは、返されないことを意味するものではありません。 – Zelphir

関連する問題