Javascript inArray无法正常工作

时间:2016-11-24 10:43:56

标签: javascript jquery .net

我在asp .net中使用了html文件上传控件,尝试限制脚本块中的文件扩展名。对于(.pdf,.txt,.doc,.docx,.xls,.xlsx,.eml,.msg)中的固定文件扩展名inArray,它已正常运行。在数组变量(array1)中检查相同时,它不起作用。

代码:

var AllowedFileExtensions = ".pdf,.txt,.doc,.docx,.xls,.xlsx,.eml,.msg";
var array1 = new Array();
array1 = AllowedFileExtensions.split(",");
for (var i = 0; i < array1.length; i++) {
    array1[i] = "'" + array1[i] + "'";
}

var ext = $('#fileDocUpload').val().split('.').pop().toLowerCase();
ext = '.' + ext;

alert([array1]); // it throws the text = '.pdf','.txt','.doc','.docx','.xls','.xlsx','.eml','.msg'
alert(ext); // .pdf

本守则运作良好:

If ($.inArray(ext, ['.pdf','.txt','.doc','.docx','.xls','.xlsx','.eml','.msg']) == -1) {
if ($.inArray(ext.toString, array1) == -1) {
     alert('invalid extension!');
     return false 
}

本准则无效:

if ($.inArray(ext.toString, array1) == -1) {
     alert('invalid extension!');
     return false 
}

1 个答案:

答案 0 :(得分:1)

这是因为您正在修改array1以在每个值中添加额外的引号。它将数组修改为:

["'.pdf'", "'.txt'", "'.doc'", "'.docx'", "'.xls'", "'.xlsx'", "'.eml'", "'.msg'"]

您不需要将值放在引号中。在此处将值转换为数组时,.split()将处理它:

var array1 = AllowedFileExtensions.split(",");
if ($.inArray(ext.toString, array1) == -1) {
    alert('invalid extension!');
    return false 
}