Jquery “如何返回”;“有效”;如果输入类型为";文件";=选择文件?

Jquery “如何返回”;“有效”;如果输入类型为";文件";=选择文件?,jquery,jquery-validate,Jquery,Jquery Validate,我在表单中使用jquery和 如果input_17的内容length>1,则需要选择一个文件input_1\u 67。这很有效 input_17: { required: function(element) { return $("#input_1_67").val().length > 1 } } 现在,如果用户选择了一个文件,我想向输入17返回一个“有效”类。你知道我怎么上这门课吗?并且:我只想在以下情况

我在表单中使用jquery和

如果
input_17
的内容
length>1
,则需要选择一个文件
input_1\u 67
。这很有效

        input_17: {
        required: function(element) {
            return $("#input_1_67").val().length > 1
        }
    }
现在,如果用户选择了一个文件,我想向
输入17
返回一个“有效”类。你知道我怎么上这门课吗?并且:我只想在以下情况下添加这个类

$("#input_1_67").val().length > 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');
为了使以上内容更易于重用,请将文件类型数组从函数中取出,并将其作为参数传递给函数。请参阅此链接:

其次,当您单击文件输入或单击“浏览”按钮时,将打开一个文件对话框。因此,输入中应该包含的唯一内容是文件名


根据这些假设,字段的有效性可以是一个简单的检查,以查看是否存在您已经在做的事情。

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

$('#input_1_67').change(function(){
    $(this).addClass('valid');
});
另外,如果您使用的是jquery验证器,您可能需要尝试一下

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

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

代码也应该对您有所帮助。+1因为有人在没有明确原因的情况下投票否决了我们的回答。
$('#input_1_67').change(function(){
    $("#input_17").valid();
});