2010-07-19 78 views
13

是否有可能確定用戶是否使用javascript/jQuery爲特定輸入類型=「文件」字段選擇了文件?jQuery:如何獲得文件上傳輸入字段的「值」

我爲ExpressionEngine(基於PHP的CMS)開發了一種自定義字段類型,允許用戶在Amazon S3上載和存儲他們的文件,但最受歡迎的EE託管服務已將max_file_uploads限制設置爲20。允許用戶上傳20個文件,再次編輯該條目以再添加20個等等。不幸的是,在編輯該條目時,最初的20個文件具有「替換該圖像」文件輸入字段,該字段似乎正在敲除上傳新圖像的可能性。當表單提交時,我想通過javascript刪除任何未使用的文件輸入字段。

回答

20

是 - 如果需要,您可以讀取該值,甚至可以綁定到change事件。

<html> 
<head> 
    <title>Test Page</title> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
    <script type="text/javascript"> 
    $(function() 
    { 
    $('#tester').change(function() 
    { 
     console.log($(this).val()); 
    }); 
    }); 
    </script> 
</head> 

<body> 

<input type="file" id="tester" /> 

</body> 
</html> 

但還有其他的多上傳解決方案可能更適合您的需求,例如發佈bpeterson76。

+0

欣賞它。沒有想到.val()會在文件輸入中返回任何東西,我猜應該只是試過了:)多次上傳的東西不太符合我這次想要去的方向,儘管通常我同意。再次感謝。 – 2010-07-19 15:11:29

+0

文件輸入字段完全可讀 - 只是不可寫。 – 2010-07-19 15:21:11

2

此代碼將從形式除去所有的空文件輸入,然後提交:

HTML:

<form action="#"> 
    <input type="file" name="file1" /><br /> 
    <input type="file" name="file2" /><br /> 
    <input type="file" name="file3" /><br /> 
    <input type="file" name="file4" /><br /> 
    <input type="file" name="file5" /><br /> 

    <input type="submit" value="Submit" /> 
</form> 

的JavaScript:

$(function() { 
    $("form").submit(function(){ 
    $("input:file", this).filter(function(){ 
     return ($(this).val().length == 0); 
    }).remove(); 
    }); 
}); 

實施例: http://jsbin.com/axuka3/