jquery数组的计数不起作用

时间:2016-06-02 15:19:47

标签: jquery arrays count

我有一个ID为#file_add_btn的按钮。单击此按钮时,文件输入将附加到我的表单:

<input type="file" class="btn_browse" name="file_uploads[]">

我创建了一个数组来存储文件名,以检查先前任何文件输入是否已经选择了所选文件。

当我尝试提醒数组filename_array的计数时,它在控制台中给我一个错误:

  

TypeError:filename_array.count不是函数

var filename_array = [];       
$(document).on('change', '.btn_browse', function() {
    filename_array.push($(this).val().split('\\').pop());
    alert(filename_array.count($(this).val().split('\\').pop()));
});

1 个答案:

答案 0 :(得分:2)

阵列上没有count()方法。有一个length属性,但只提供它所拥有的项目总数。

要执行您需要的操作,您可以使用indexOf()检查数组是否已包含您要添加的值,如下所示:

var filename_array = [];       
$(document).on('change','.btn_browse', function() {
    var selectedFilename = $(this).val().split('\\').pop();
    if (filename_array.indexOf(selectedFilename) != -1) {
        alert('file already selected');
    } else {
        filename_array.push(selectedFilename);
        alert('file added to array');
    }
});

Working example

或者,您可以使用设置了multiple属性的单个文件输入,以便可以通过单个控件上载多个唯一文件,如下所示:

<input type="file" class="btn_browse" name="file_uploads[]" multiple="multiple" />