2013-01-03 23 views
0

当我尝试使用文件提交表单时,上传文件被选定后但在提交表单之前已更改(例如,重命名文件)。表格根本不提交。这是我的示例代码:当上传文件丢失时不提交表单

<form action="test.htm" method="post" enctype="multipart/form-data" id="test"> 
    <input type="file" name="file" /> 
    <input type="submit" value="Submit" /> 
</form> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<script> 
$(document).ready(function() { 
    $('#test').submit(function() { 
     console.log("IT WORKS!"); 
     return true; 
    }); 
}); 
</script> 

UPDATE

更简化,使用此代码:

<form action="upload.asp" method="post" enctype="multipart/form-data"> 
    <input type="file" name="file" /> 
    <input type="submit" value="Submit" /> 
</form> 

尽量做到这一点:1)选择从系统2中的文件)重命名系统上的文件3)提交表单。

什么也没有发生。

回答

0

如果你想知道为什么console.log没有显示,那是因为表单已经被提交。

只需添加一个event.preventDefault以确保您的代码能够正常运行。

$(document).ready(function() { 
    $('#test').submit(function(e) { 
     e.preventDefault(); 
     console.log("IT WORKS!"); 
     return true; 
    }); 
}); 

DEMO

UPDATE

你的操作路径是一个.htm文件。您将需要服务器端语言来处理POST

+0

这不是在我的情况下失败的console.log,但实际上是表单提交。我已经尝试了你的代码,并且它也失败了(至少在Chrome上)。尝试这样做: 1)添加文件 2)重命名系统上的文件 3)提交表单。 然后没有任何反应。 – user1770444

+0

完全删除Javascript也是一个好的解决方案,但是,它也会失败。我添加了Javascript以查看是否可以捕获任何错误。 – user1770444

+0

我刚刚在IE8中测试过,并且在浏览器中也失败了。 – user1770444

0

您javascsript功能是没有用的..因为

<input type="submit".. 

就已经提交表单它被称为前

一个方法是在你的函数中使用preventDefault() ..

$(document).ready(function() { 
$('#test').submit(function(e) { 
    e.preventDefault(); 
    console.log("IT WORKS!"); 
    return true; 
}); 
}); 

或作为按钮输入您的输入

<button id="submit">Submit</button> 

$('#submit').click(function(){ 
$('#test').submit(function() { 
    console.log("IT WORKS!"); 
    return true; 
}); 
}); 
+0

没有Javascript,它仍然失败。看到我对Pranav的评论。 – user1770444