在提交表单之前验证文件扩展名和大小

Mah*_*ale 11 jquery jquery-validate

我正在使用jQuery validate插件,并希望在提交表单之前验证文件扩展名和文件大小.

"use strict";
$('#update_profile').validate({
    rules: {
        FirstName: {
            required: true,
            maxlength: 20
        },
        image: {
            required: true,
            extension: "jep | jpeg",
            filesize : 50000,
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

我想要类似于上面的代码.

Aru*_*hny 30

您需要编写自定义规则来验证文件大小,还必须将文件扩展名作为逗号分隔的字符串传递

$.validator.addMethod('filesize', function (value, element, param) {
    return this.optional(element) || (element.files[0].size <= param)
}, 'File size must be less than {0}');

jQuery(function ($) {
    "use strict";
    $('#update_profile').validate({
        rules: {
            FirstName: {
                required: true,
                maxlength: 20
            },
            image: {
                required: true,
                extension: "jpg,jpeg",
                filesize: 5,
            }
        },
    });
});
Run Code Online (Sandbox Code Playgroud)
<script type="text/javascript" src="//code.jquery.com/jquery-1.11.3.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/jquery.validate.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/additional-methods.js"></script>

<form id="update_profile" method="post" action="">
  <input type="file" name="image" />
  <input type="submit" value="Save" />
</form>
Run Code Online (Sandbox Code Playgroud)

  • 管道“|” 根据文档是一个有效的分隔符,但不能有任何空格:https://jqueryvalidation.org/extension-method/ (2认同)

小智 8

请注意,element.files[0].size 使用字节单位。因此,如果您想使用 MB,则需要将其转换为字节。在这个例子中:

$.validator.addMethod('filesize', function (value, element, param) {
    return this.optional(element) || (element.files[0].size <= param * 1000000)
}, 'File size must be less than {0} MB');
Run Code Online (Sandbox Code Playgroud)

您需要传递到您的验证中:

$('#update_profile').validate({
    rules: {
        FirstName: {
            required: true,
            maxlength: 20
        },
        image: {
            required: true,
            extension: "jep | jpeg",
            filesize : 5, // here we are working with MB
        }
    }
});
Run Code Online (Sandbox Code Playgroud)