0

我正在使用 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"
                }
            }
        });

有人看到有什么不对吗?

4

1 回答 1

1

“有人看出什么不对了吗?”

是的...

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

它根本不起作用,因为您没有任何input具有属性的文件元素name="fileName"

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

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

$(document).ready(function() {

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

});

我不确定你想用内联 JavaScript 实现什么,但你不需要onchangejQuery Validate 的处理程序才能正常工作。 (实际上,使用 jQuery,您将永远不需要再次使用内联事件处理程序)

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

您的代码的工作演示:http: //jsfiddle.net/yb9A8/

于 2013-09-02T21:05:41.217 回答