Javascript 如何在jQuery中检查输入文件是否为空

Javascript 如何在jQuery中检查输入文件是否为空,javascript,jquery,html,Javascript,Jquery,Html,对JS来说是全新的。 我试图在使用jQuery/JavaScript提交表单时检查file输入元素是否为空。 我已经经历了一系列的解决方案,但没有什么对我有效。我试图避免使用/c/fakepath(除非没有其他选项) 获取文件名的唯一方法是使用以下命令: var vidFile = document.getElementById("videoUploadFile").files[0].name; var vidFileLength = $("#videoUploadFile")[0].file

对JS来说是全新的。
我试图在使用jQuery/JavaScript提交表单时检查file输入元素是否为空。 我已经经历了一系列的解决方案,但没有什么对我有效。我试图避免使用
/c/fakepath
(除非没有其他选项)

获取文件名的唯一方法是使用以下命令:

var vidFile = document.getElementById("videoUploadFile").files[0].name;
var vidFileLength = $("#videoUploadFile")[0].files.length;
if(vidFileLength === 0){
    alert("No file selected.");
}
如果没有可用文件,代码将抛出错误:

无法读取未定义的属性名

这是有意义的,因为数组未设置。但是我不知道如何处理这个错误

如何正确获取文件输入元素
videoUploadFile
,检查它是否为空,如果为空则抛出错误消息?

只需检查属性的长度,它是输入元素上包含的对象

if( document.getElementById("videoUploadFile").files.length == 0 ){
    console.log("no files selected");
}

以下是它的jQuery版本:

if ($('#videoUploadFile').get(0).files.length === 0) {
    console.log("No files selected.");
}

问题:如何检查文件是否为空

答:我已经用这个Jquery代码解决了这个问题

//如果文件为空:
if(jQuery('#videoUploadFile').val()=''){
$('#message').html(“请附上文件”);
}否则{
警报(“不工作”);
}




检查输入文件是否为空 通过使用文件长度属性,
索引
应按如下方式指定:

var vidFile = document.getElementById("videoUploadFile").files[0].name;
var vidFileLength = $("#videoUploadFile")[0].files.length;
if(vidFileLength === 0){
    alert("No file selected.");
}

我知道我参加聚会迟到了,但我想我应该添加我最终使用的内容-这只是检查文件上载输入是否不包含带有not运算符的truthy值&JQuery,如下所示:

if (!$('#videoUploadFile').val()) {
  alert('Please Upload File');
}
请注意,如果这是在表单中,您可能还希望使用以下处理程序对其进行包装,以防止表单提交:

$(document).on("click", ":submit", function (e) {

  if (!$('#videoUploadFile').val()) {
  e.preventDefault();
  alert('Please Upload File');
  }

}

选中
.files.length
?如果表单上有多个非空文件,也可以筛选它们:
var files=$('#formbody').find('input[type=file]').filter(function(){return$(this)[0].files.length>0;})进一步解释为什么会这样做或原始问题中的错误将有助于提高此答案的质量。@josh burgess此答案是如何检查文件是否为空,这是使用jquery提交表单时检查文件的另一种方法。@josh burgess OP询问如何在jquery中执行此操作。所有其他答案要么使用香草JS,要么使用JS和jQuery的组合。这是唯一一个专门使用jQuery的人。也许我很挑剔,但我不喜欢把jQuery和vanilla JS混在一起,除非我真的必须这样做。@EduardLuca的答案已经两年多了。当时它被标记为低质量。对代码的解释通常受到SO社区的欢迎,并且该评论的目的是作为一个有用的提醒,不仅要发布代码,还要解释代码是什么以及它为什么工作。希望这有助于澄清问题。这个答案更适合OP询问JQuery解决方案。
$('videoUploadFile').get(0)
$('videoUploadFile')[0]
相同,但可能
get()
会进行一些健全性检查
(document.getElementById(“videoUploadFile”)。files.length==0)
我认为你应该在你的帖子上添加一些评论。
  $("#customFile").change(function() { 
    var fileName = $("#customFile").val();  

    if(fileName) { // returns true if the string is not empty   
        $('.picture-selected').addClass('disable-inputs'); 
        $('#btn').removeClass('disabled');   
    } else { // no file was selected 
      $('.picture-selected').removeClass('disable-inputs'); 
      $('#btn').addClass('disabled');
    }  
  });