0
我有以下的html如何一個javascript的FileReader對象附加到一個HTML輸入[類型= 「文件」]元素
<div style="line-height:60px" class="dragzone">
<img width="60px" height="60px" src="" class="image-thumb" style="float: left;" />
<input class="image field" name="test[0][file]" type="file" />
<input type="text" name="test[0][alt]" placeholder="Image Alt text" />
<input type="text" name="test[0][title]" placeholder="Image Title"/>
</div>
和以下JavaScript
$.event.props.push("dataTransfer");
var drag_zones = jQuery(".dragzone:not(.bound)");
// for each dragzone
jQuery(drag_zones).each(function(index, domEle) {
jQuery(this).bind("dragenter dragover", false).bind("drop", function(evt) {
// dont do whatever you were going to do
evt.stopPropagation();
evt.preventDefault();
// get the preview image
var i = jQuery(this).find("img");
// get the input
var f = jQuery(this).find('input[type="file"]');
var files = evt.dataTransfer.files;
if (files.length > 0) {
var file = files[0];
if (typeof FileReader !== "undefined" && file.type.indexOf("image") != -1) {
var reader = new FileReader();
reader.onload = function(evt) {
// add the image data to the image preview
jQuery(i).attr("src", evt.target.result);
// I want to attach the file data to the input field (f) here
jQuery(f).css("background","red");
};
reader.readAsDataURL(file);
}
}
});
});
從拖動圖像後窗口資源管理器到元素周圍的dragzone我有更新的預覽圖像罰款,我現在想附加這個文件到實際的HTML表單元素,所以它是與一個表單(未顯示)一起發送和輸入從'沒有文件選擇'到路徑名稱。
我周圍搜索,但無法找到我所需要的,我做了上述代碼jsfiddle在這裏。
http://jsfiddle.net/OneManOneLaptop/5D6k2/
您是否想以編程方式更改輸入元素所選的文件?我懷疑這是否可能。 – pimvdb 2012-03-03 12:49:11
yup,因此輸入[type =「file」]的狀態與通過「Choose File」按鈕選擇文件時的狀態相同 – 2012-03-03 13:11:49
從文件api docs here http://www.w3.org/TR/FileAPI /#dfn-filelist它看起來像FileList是一個只讀對象 – 2012-03-03 14:49:02