jQuery Validation插件不使用文件输入元素

时间:2013-09-02 20:12:53

标签: jquery jquery-validate

我正在使用jQuery Validation插件将用户限制为某些文件类型。截至目前,它接受任何和所有文件,无论我做什么。我称之为:

    $("#untForm").validate({
      ignore: [],
        rules: {
            fileName: {
                required: false,
                extension: "jpg|gif|png|mov|avi|pdf"
            }
        }
    });

这是我表格的一部分:

<input type="file" class="file_input_hidden" name="attachment" id="attachment" onchange="javascript: document.getElementById('fileName').value = this.value"   />

我也试过这个:

<input type="file" class="file_input_hidden" name="attachment" id="attachment" onchange="javascript: document.getElementById('fileName').value = this.value" accept=" "image/x-jpg, image/x-png, image/x-gif, application/pdf"  />

在下面的例子中,如果我使用扩展参数,它接受任何类型的文件!

$("#untForm").validate({
         ignore: [],
            rules: {
                fileName: {
                    required: false,
                    extension: "png|jpe?g|gif"
                }
            }
        });

有人看错了什么吗?

1 个答案:

答案 0 :(得分:1)

  

“有人看错了吗?”

...是

rules: {
    fileName: {  // <- no such element with this name
        ....

由于您没有属性input的任何文件name="fileName"元素,因此无法正常工作。

必须使用相关文件name元素的input属性分配规则。

如果你的问题的HTML标记是name="attachment",那么你的jQuery需要看起来像......

$(document).ready(function() {

    $("#untForm").validate({
        ignore: [],
        rules: {
            attachment: { // <- name of input
                required: false,
                extension: "png|jpe?g|gif"
            }
        }
    });

});

我不确定您使用内联JavaScript实现了什么,但是您不需要onchange处理程序来使jQuery Validate正常运行。 (实际上,使用jQuery,您将永远不需要再次使用内联事件处理程序)

<input type="file" class="file_input_hidden" name="attachment" id="attachment" />

正在编写代码的DEMO:http://jsfiddle.net/yb9A8/