2013-01-03 35 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