Download: スクリプトのダウンロード
- jquery.uploadThumbs.js (6kb) .. 「対象をファイルに保存」で保存してください。
※呼び出す HTML と JavaScript のソースの書き方は、それぞれの表示形式のサンプルをご覧ください。
before : プレビュー画像を前に挿入
Note 解説
「画像を前に挿入」は、ファイル選択要素(<input type="file">)の前にプレビュー画像を挿入します。
- 設定の "position" に "0" を指定した場合、この形式になります。(既定)
※"2" を指定した場合は、兄弟要素の一番前に追加していきます。 - 設定の "imgbreak" に "true" を指定すると、同時に改行(<br>)も挿入されます。
- ファイル選択要素を <label> で囲むと、プレビュー画像をクリックしたときに、ファイル選択要素を再度押したような振る舞いをします。
JavaScriptとHTMLの各ソースは上のタブを操作してご覧ください。
JavaScript ソース
<script src="jquery.js"></script>
<script src="jquery.upload_thumbs.js"></script>
<script>
$(function() {
// jQuery Upload Thumbs
$('form input:file').uploadThumbs({
position : 0, // 0:before, 1:after, 2:parent.prepend, 3:parent.append,
// any: arbitrarily jquery selector
imgbreak : true // append <br> after thumbnail images
});
});
</script>
HTML ソース(入力前)
<form action="#" method="post" enctype="multipart/form-data">
<ul>
<li>
<label>
<input type="file" name="images[]" multiple="multiple" />
</label>
</li>
<li>
<label>
<input type="file" name="images[]" multiple="multiple" />
</label>
</li>
</ul>
</form>
HTML ソース(入力後)
<form action="#" method="post" enctype="multipart/form-data">
<ul>
<li>
<label>
<img src="data:image/jpeg;base64,/..." class="thumb"
alt="ファイル名" title="ファイル名 (ファイルサイズ)" /><br />
<input type="file" name="images[]" multiple="multiple" />
</label>
</li>
<li>
<label>
<input type="file" name="images[]" multiple="multiple" />
</label>
</li>
</ul>
</form>
CSS ソース
<style>
form img.thumb {
margin:0 5px 5px 0;
max-width:160px;
vertical-align:bottom;
}
</style>
after : プレビュー画像を後に挿入
Note 解説
「画像を後に挿入」は、ファイル選択要素(<input type="file">)の後にプレビュー画像を挿入します。
- 設定の "position" に "1" を指定した場合、この形式になります。
※"3" を指定した場合は、兄弟要素の一番後に追加していきます。 - 設定の "imgbreak" に "false" を指定すると、改行(<br>)は挿入されません。
- ファイル選択要素を <label> で囲まなければ、プレビュー画像をクリックしても何も起きません。
JavaScriptとHTMLの各ソースは上のタブを操作してご覧ください。
JavaScript ソース
<script src="jquery.js"></script>
<script src="jquery.upload_thumbs.js"></script>
<script>
$(function() {
// jQuery Upload Thumbs
$('form input:file').uploadThumbs({
position : 1, // 0:before, 1:after, 2:parent.prepend, 3:parent.append,
// any: arbitrarily jquery selector
imgbreak : false // append <br> after thumbnail images
});
});
</script>
HTML ソース(入力前)
<form action="#" method="post" enctype="multipart/form-data">
<ul>
<li>
<input type="file" name="images[]" multiple="multiple" />
</li>
<li>
<input type="file" name="images[]" multiple="multiple" />
</li>
</ul>
</form>
HTML ソース(入力後)
<form action="#" method="post" enctype="multipart/form-data">
<ul>
<li>
<input type="file" name="images[]" multiple="multiple" />
<img src="data:image/jpeg;base64,/..." class="thumb"
alt="ファイル名1" title="ファイル名1 (ファイルサイズ1)" />
<img src="data:image/jpeg;base64,/..." class="thumb"
alt="ファイル名2" title="ファイル名2 (ファイルサイズ2)" />
</li>
<li>
<input type="file" name="images[]" multiple="multiple" />
</li>
</ul>
</form>
CSS ソース
<style>
form img.thumb {
margin:0 5px 5px 0;
max-width:160px;
vertical-align:bottom;
}
</style>
arbitrarily : プレビュー画像を任意の場所に挿入
Note 解説
「画像を任意の場所に挿入」は、"position" で指定した要素にプレビュー画像を挿入します。
- 設定の "position" に 数字以外 を指定した場合、この形式になります。
※jQuery のセレクタの形式で指定します。 - ただし、プレビュー画像を挿入する要素が固定されてしまうので、対応するファイル選択要素(<input type="file">)は一つしか設置することができません。
※複数設置する場合は、複数の呼び出しスクリプトを書きます。
JavaScriptとHTMLの各ソースは上のタブを操作してご覧ください。
JavaScript ソース
<script src="jquery.js"></script>
<script src="jquery.upload_thumbs.js"></script>
<script>
$(function() {
// jQuery Upload Thumbs
$('#upload1').uploadThumbs({
position : '#preview1', // any: arbitrarily jquery selector
});
$('#upload2').uploadThumbs({
position : '#preview2', // any: arbitrarily jquery selector
});
});
</script>
HTML ソース(入力前)
<form action="#" method="post" enctype="multipart/form-data">
<ul>
<li>
<input type="file" id="upload1" name="images[]" multiple="multiple" />
</li>
<li>
<input type="file" id="upload2" name="images[]" multiple="multiple" />
</li>
</ul>
<p id="preview1"></p>
<p id="preview2"></p>
</form>
HTML ソース(入力後)
<form action="#" method="post" enctype="multipart/form-data">
<ul>
<li>
<input type="file" id="upload1" name="images[]" multiple="multiple" />
</li>
<li>
<input type="file" id="upload2" name="images[]" multiple="multiple" />
</li>
</ul>
<p id="preview1">
<img src="data:image/jpeg;base64,/..." class="thumb"
alt="ファイル名1" title="ファイル名1 (ファイルサイズ1)" />
<img src="data:image/jpeg;base64,/..." class="thumb"
alt="ファイル名2" title="ファイル名2 (ファイルサイズ2)" />
</p>
<p id="preview2"></p>
</form>
CSS ソース
<style>
form img.thumb {
margin:0 5px 5px 0;
max-width:160px;
vertical-align:bottom;
}
</style>
exclusion : 画像の差し替え(排他制御)
Note 解説
Webアプリケーションでは、既にアップロードされてデータベース等に登録されている画像を、新しい画像に差し替えたい、または削除したいというときがあります。
「画像の差し替え」では、チェックボックスを利用して、現在登録されている画像を保持するか、新しい画像や削除したいのかを、画像のプレビューで表現することができます。
- 特に特別な設定をする必要はありません。
- チェックボックスにチェックがついていると、現在の画像のみ表示します。
- チェックボックスのチェックを外すと、現在の画像は非表示になります。
- ファイル選択要素(<input type="file">)から新しい画像を選択すると、その画像のプレビューが表示され、現在の画像は非表示になります。それに伴い、チェックボックスのチェックが外れます。
- PHP などのプログラムでは、このチェックボックスの ON/OFF、および新しい画像の有無で、画像の適用を判断することができます。
JavaScriptとHTMLの各ソースは上のタブを操作してご覧ください。
JavaScript ソース
<script src="jquery.js"></script>
<script src="jquery.upload_thumbs.js"></script>
<script>
$(function() {
// jQuery Upload Thumbs
$('form input:file').uploadThumbs();
});
</script>
HTML ソース(入力前)
<form action="#" method="post" enctype="multipart/form-data">
<ul>
<li>
<label>
<input type="checkbox" name="checked" value="1" checked="checked" />
<small>現在の画像を使用</small><br />
</label>
<label>
<img src="example.jpg" class="uploaded thumb" alt="" /><br />
<input type="file" name="images" />
</label>
</li>
<li>
<!-- <label> を書かない場合 -->
<input type="checkbox" name="checked" value="1" checked="checked" />
<small>現在の画像を使用</small><br />
<img src="example2.jpg" class="uploaded thumb" alt="" /><br />
<input type="file" name="images" />
</li>
</ul>
</form>
HTML ソース(入力後)
<form action="#" method="post" enctype="multipart/form-data">
<ul>
<li>
<label>
<input type="checkbox" name="checked" value="1" ... />
<small>現在の画像を使用</small><br />
</label>
<label>
<img src="example.jpg" class="uploaded thumb" style="display:none;" alt="" /><br />
<img src="data:image/jpeg;base64,/..." class="thumb"
alt="ファイル名" title="ファイル名 (ファイルサイズ)" /><br />
<input type="file" name="images" />
</label>
</li>
<li>
<!-- <label> を書かない場合 -->
<input type="checkbox" name="checked" value="1" ... />
<small>現在の画像を使用</small><br />
<img src="example2.jpg" class="uploaded thumb" style="display:none;" alt="" /><br />
<input type="file" name="images" />
</li>
</ul>
</form>
CSS ソース
<style>
form img.thumb {
margin:0 5px 5px 0;
max-width:160px;
vertical-align:bottom;
}
</style>