如果输入type =“file”=文件被选中,如何返回“valid”?

时间:2011-11-15 13:17:33

标签: jquery jquery-validate

我使用jquery和jquery validate plugin作为我的表单。

如果input_17包含内容length > 1,则需要选择文件input_1_67。这很有效。

        input_17: {
        required: function(element) {
            return $("#input_1_67").val().length > 1
        }
    }

现在,如果用户选择了一个文件,我想将“有效”类返回给input_17。任何想法我怎么能得到这个课程?并且:我只想在

时添加这个类
$("#input_1_67").val().length > 1

并选择一个文件。

3 个答案:

答案 0 :(得分:1)

如果您使用的是jQuery验证器插件,那么您不必在输入中添加任何类,验证器会为您执行此操作。

据我所知,浏览器不允许您读取文件路径,或者为此设置它。你唯一能得到的就是文件名。这是一项安全限制,可防止未经授权的文件访问。您可以通过获取值来获取文件名。完成此操作后,您可以对文件类型进行进一步验证(但在客户端上不可靠)。如果要将自定义规则添加到验证器以检查文件类型,则可以执行以下操作:

jQuery.validator.addMethod("filetype", function(value, element) {
    var types = ['jpeg', 'png', 'gif'],
        ext = value.replace(/.*[.]/, '').toLowerCase();

    if (types.indexOf(ext) !== -1) {
        return true;
    }
    return false;
}, 'Insert invalid message here');

为了使上述内容更具可重用性,请从函数中取出文件类型数组,并将它们作为参数传递给函数。请看这个链接:http://docs.jquery.com/Plugins/Validation/Validator/addMethod#namemethodmessage

其次,当您单击文件输入或单击“浏览”按钮时,将打开一个文件对话框。所以输入中唯一应该是文件名。

根据这些假设,该字段的有效性可以是一个简单的检查,看看是否有东西,这是你已经在做的。

答案 1 :(得分:0)

您可以简单地将change事件绑定到所需的输入,即:

$('#input_1_67').change(function(){
    $(this).addClass('valid');
});

答案 2 :(得分:0)

$('#input_1_67').change(function(){
    if($("#input_1_67").val().length > 1)
        $("#input_17").addClass('valid');
    else
        $("#input_17").removeClass('valid');
    }
});

另外,如果您使用的是jquery验证器,则可能需要尝试

$('#input_1_67').change(function(){
    $("#input_17").valid();
});

这将触发验证器方法(因为input_17有效性取决于input_1_67,它应该在input_1_67更改时验证),插件将自动设置css类。