jQuery验证器不适用于文件输入类型

时间:2015-06-04 09:00:35

标签: javascript jquery jquery-validate

我正在尝试使用jQuery验证器插件实现文件输入类型的验证。 文件输入类型应仅接受带有.jpeg,.jpg和&amp ;;的图像。 .png扩展名&文件大小不应大于1MB。 其他输入字段的验证无任何问题。必需的验证适用于文件输入类型。

可能是什么问题?

的Javascript

jQuery.validator.addMethod('filesize', function(value, element, param) {
   return this.optional(element) || (element.files[0].size <= param) 
});    

$('#form').validate({
        rules: {
            firstname: {
                minlength: 6,
                required: true
            },
            lastname: {
                minlength: 6,
                required: true
            },
            file: {
                required: true, 
                accept: "png|jpeg|jpg",
                filesize: 1048576 
            }
        },
        messages: 
           { 
            file: "File must be JPEG or PNG, less than 1MB" 
           },
        highlight: function(element) {
            $(element).closest('.form-group').addClass('has-error');
        },
        unhighlight: function(element) {
            $(element).closest('.form-group').removeClass('has-error');
        },
        errorElement: 'span',
        errorClass: 'help-block',
        errorPlacement: function(error, element) {
            if(element.parent('.input-group').length) {
                error.insertAfter(element.parent());
            } else {
                error.insertAfter(element);
            }
        }
    });

HTML

<form id="form">
    <div class="form-group">
        <label class="control-label" for="firstname">First:</label>
        <div class="input-group">
            <input class="form-control"  name="firstname" type="text" />
        </div>
    </div>

    <div class="form-group">
        <label class="control-label" for="lastname">Last:</label>
        <div class="input-group">
            <input class="form-control" name="lastname" type="text" />
        </div>
    </div>

        <div class="form-group">
        <label class="control-label" for="file">Image:</label>
        <div class="input-group">
            <input  id="file" name="file" type="file" />
        </div>
    </div>


        <button type="submit" class="btn btn-primary">Submit</button>
</form>

Fiddle that doesn't give desired result

1 个答案:

答案 0 :(得分:4)

  

...只接受.jpeg,.jpg&amp; .png扩展名

  1. The accept rule仅适用于MIME类型。 The extension rule用于文件扩展名。您似乎应该使用extension规则而不是accept。您还需要包含the additional-methods.js file才能使用这些规则。

  2. 要访问文件的size属性,您需要在enctype="multipart/form-data"标记上设置<form>属性。

  3. 工作演示:http://jsfiddle.net/mv8w3m0c/1/