使用jQuery验证至少1个文件输入

时间:2012-01-12 10:29:36

标签: javascript jquery html

如何使用jQuery确保至少有一个字段具有选定的文件?这是我的表格:

<form action="b.php">
    <input type="file" name="file[]">
    <input type="file" name="file[]">
    <input type="file" name="file[]">
    <input type="file" name="file[]">
    <input type="submit" value="Value">
</form>

3 个答案:

答案 0 :(得分:3)

要实现此目的,您可以使用map()构建所有有效文件input元素的数组。然后,您可以检查此数组中是否包含任何元素。如果是,则至少有一个输入有效,如果它是空的则没有选择任何内容。试试这个:

var validFields = $('input[type="file"]').map(function() {
    if ($(this).val() != "") {
        return $(this);
    }
}).get();    

if (validFields.length) {
    console.log("Form is valid");
} else {
    console.log("Form is not valid");
}

Example fiddle

答案 1 :(得分:0)

您可以使用jQuery的.val()方法来检查是否已设置了值,但我不知道它是否适用于文件输入类型。

但是,您应该使用服务器端语言来验证您的文件,因为如果您使用的是javascript,浏览该页面的人只能禁用验证。只需遍历file[]数组并检查它是否为空。

这实际上更安全,更容易。

答案 2 :(得分:0)

虽然您当然需要服务器端验证,但有一些很好的技巧可以检查是否有人在您的输入元素中添加了文件。

现在,由于安全原因,您对文件输入元素的访问受到严格限制,因此您无法更改它。但是,您可以检查以下内容:

if($('input[type="file"]').val() != "") {
    alert("a file is selected")
}