限制jquery文件数量上传

时间:2015-11-20 11:12:20

标签: jquery forms

我有一个自定义表单,用于将图像文件上传到博客。我尝试用jquery脚本限制将上传文件的数量,但没有成功。这个脚本有什么问题?

我的(简化)表格:

<form action="" method="post" class="adverts-form">

    <div class="moxie-shim" id="">
        <input id="" multiple="" accept="" type="file">
    </div>

    <input name="submit" value="Preview" class="adverts-cancel-unload" type="submit">

</form>

我的jquery脚本:

jQuery(".moxie-shim").children("input").change(function(){
    if(this.files.length>3)
        alert("to many files")
    });
// Prevent submission if limit is exceeded
jQuery(".adverts-form").submit(function(){
    if(this.files.length>3)
        return false;
    });

更新

根据@drunkwolf的建议更新了jquery,但图片仍然上传(没有限制)。

jQuery(".adverts-form").submit(function(){
    if(jQuery("#adverts-plupload-upload-ui input")[0].files.length>2){
        alert("nope still to many")
        return false;
    }
});

2 个答案:

答案 0 :(得分:1)

第二个this并不是指第一个jQuery(".adverts-form").submit(function(){ if(jQuery('input[type=file]')[0].files.length>2){ alert("nope still to many") return false; } }); 。在提交时,您需要检查输入是否有超过3个文件,而不是表单。一种方法是这样:

List<string> tokens = new List<string>();
int token_number=0 ;
char[] character = file_text.ToCharArray();
int i = 0;
for (; i < character.Length; i++)
{
    if (char.IsLetter(character[i]))
    {
        string local_token;
        while (char.IsLetterOrDigit(character[i + 1]) || character[i + 1] == '_')
        {

            local_token += character[i];
            tokens.Add(local_token.ToString());
        }

    }
}

确切的实现显然取决于您在网站/表单上有多少输入。点击here查看工作示例。

答案 1 :(得分:0)

检查this

<div class="moxie-shim" id="">
    <input id="file" multiple="" accept="" type="file">
</div>

<input name="button" value="Preview" class="adverts-cancel-unload" type="submit">

jQuery(".moxie-shim").children("input").change(function(){
    if(this.files.length>3)
        alert("to many files")
    });
// Prevent submission if limit is exceeded
jQuery(".adverts-form").submit(function(){
    if(jQuery("#file")[0].files.length>3)
        return false;
    });