FileReader()返回值undefined
问题描述:
如何将var validEmails
返回到checkform()
。现在是undefined
。FileReader()返回值undefined
<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>
答
validEmails变量位于onload函数的范围内。要么定义它的功能或删除“var”(这将使其成为全局变量)。
您应该检查javascript的变量范围http://www.w3schools.com/js/js_scope.asp
如何避免全局变量?为什么不可能简单地返回值?范围并不意味着它不能被退回。 – Zelphir