当用户从表单输入中选择图像时,我正在寻找一种方法来更改div背景图像。如下所示,我有一个输入类型的文件。一旦用户选择了他们想要的文件,我希望div#imgHolder根据所选文件更改背景。有什么想法吗?
<div id="simpleDialog" style="width: 350px; height: 350px; display:none;" scrolltop="0">
<br>
<div id="imgHolder" style="width:200px;height:200px;background-image: url(images/gray.png)"></div>
<br>
<form id="userForm" align="center">
<fieldset>
<legend>Artist Info</legend>
<input type="file" name="artistImage" id="artistImage" style="border: none;float:left"><br><br>
<label for="text" style="float:left">Enter URL:</label>
<input type="text" name="website" id="website" value="" required="required">
</fieldset>
</form>
<input type="button" id="submit" value="Submit" />
<input type="button" id="cancel" value="Cancel" />
</div>
答案 0 :(得分:12)
由于您标记了此html5,因此您了解这是一种高级浏览器功能。
您要求的内容需要most all modern browsers(甚至IE)中提供的FileReader。
// Bind to the change event of our file input
$("input[name='myFileSelect']").on("change", function(){
// Get a reference to the fileList
var files = !!this.files ? this.files : [];
// If no files were selected, or no FileReader support, return
if ( !files.length || !window.FileReader ) return;
// Only proceed if the selected file is an image
if ( /^image/.test( files[0].type ) ) {
// Create a new instance of the FileReader
var reader = new FileReader();
// Read the local file as a DataURL
reader.readAsDataURL( files[0] );
// When loaded, set image data as background of page
reader.onloadend = function(){
$("html").css("background-image", "url(" + this.result + ")");
}
}
});
我刚刚在Internet Explorer 10,Chrome 19/21,Firefox 12/13和Opera 11.64中测试了上述代码,发现它没有问题。
不支持FileReader的旧浏览器将保持静默。没有显示图像,没有例外。
答案 1 :(得分:1)
如果要访问本地计算机上的图片,可以使用HTML5's File API执行此操作。
<input type="file" id="files" name="files[]" multiple />
<output id="list"></output>
<script>
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object
// Loop through the FileList and render image files as thumbnails.
for (var i = 0, f; f = files[i]; i++) {
// Only process image files.
if (!f.type.match('image.*')) {
continue;
}
var reader = new FileReader();
// Closure to capture the file information.
reader.onload = (function(theFile) {
return function(e) {
// Render thumbnail.
var span = document.createElement('span');
span.innerHTML = ['<img class="thumb" src="', e.target.result,
'" title="', escape(theFile.name), '"/>'].join('');
document.getElementById('list').insertBefore(span, null);
};
})(f);
// Read in the image file as a data URL.
reader.readAsDataURL(f);
}
}
document.getElementById('files').addEventListener('change', handleFileSelect, false);
</script>
答案 2 :(得分:0)
您可以点击表单输入的图片来编写jQuery,以更改background-image
的css属性#imgHolder
。
答案 3 :(得分:0)
由于浏览器安全模式,它不允许您从本地计算机访问文件并在浏览器中显示它,除非您使用HTML5 FileReader()功能(不幸的是,所有浏览器都不支持现在)。