jQuery验证 - 需要工作但不接受

use*_*273 4 jquery jquery-validate

即时通过jquery上传图像并尝试验证它.这是我的代码:

<script type="text/javascript" src="http://jzaefferer.github.com/jquery-validation/jquery.validate.js"></script>

<script type='text/javascript'>
$(document).ready(function(){
    $("#form").validate({
        errorLabelContainer: "#message_box", wrapper: "li",

        rules: {
            image: {required: true, accept: "jpg|jpeg|png|gif"}
        },
        messages: {
            image: {required: 'Required!', accept: 'Not an image!'}
        }
    })
});
</script>
Run Code Online (Sandbox Code Playgroud)

必需是工作 - 如果我没有插入图像我得到一个错误.但接受不起作用(任何我插入的通行证),我无法弄清楚为什么.有任何想法吗?:)

Eja*_*jaz 19

你需要两件事.

(1)使用有效的语法用于使用accept方法,因为它要求您使用以逗号分隔的mimetypes列表.

$(document).ready(function(){
    $("#form").validate({
        errorLabelContainer: "#message_box", wrapper: "li",

        rules: {
            image: {required: true, accept: "image/jpg,image/jpeg,image/png,image/gif"}
        },
        messages: {
            image: {required: 'Required!', accept: 'Not an image!'}
        }
    })
});  
Run Code Online (Sandbox Code Playgroud)

(2)你必须包括additional-methods.js因为这些accept方法不包含在核心验证插件中.因此,<head>在包含validate插件后 添加以下内容

<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/additional-methods.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

这是jsfiddle链接.请注意,它包括debug: true防止在小提琴中发布表单.

  • 这个答案没有任何问题。但是,最简单的解决方法是将 `accept` 更改为 `extension`。参见 [`extension`](http://docs.jquery.com/Plugins/Validation/CustomMethods/extension#extension) 规则。 (2认同)

Spa*_*rky 6

1)如前所述,您需要包含该additional-methods.js文件。

2)对于文件扩展名,使用extension规则。该accept规则适用于 mime 类型。

$(document).ready(function(){

    $("#form").validate({
        errorLabelContainer: "#message_box", wrapper: "li",
        rules: {
            image: {
                required: true,
                extension: "jpg|jpeg|png|gif"
            }
        },
        ...
    })

});
Run Code Online (Sandbox Code Playgroud)