ダイナミックなinput of type file
を作成していくつかの画像を追加または削除しました。タイプファイルの動的入力フィールドを追加してプレビュー
ユーザーは、それがタイプフィールドの新しい入力を追加add fields
をクリックしたとき。ボタンがクリックされたときに入力フィールドを追加するためのコード:
var i = 0;
$("#add_more_img").click(function(e){
i++;
$("#dynamic_table_field").append('<tr id=row'+i+'><td><button name="remove" id="'+i+'" class="btn btn-danger btn-remove">X</button></td><td><input type="file" name="event_images[]" id="event_images'+i+'" data-panelid="event_images'+i+'" class="form-control images_list" accept="image/gif, image/png, image/jpeg, image/pjpeg" /></td><td id="img_preview_td"><img name="img_preview'+i+'" id="img_preview" /></td></tr>');
alert("Hiiiiii");
e.preventDefault();
});
をユーザーが画像を選択したとき、私はそれが上の写真で赤枠内に表示させたいです。私はすでにそれのためのコードを持っていますが、それは単一の入力フィールドのためにのみ動作します。だから私はそのコードをいくつか変更しようとしましたが、それでも動作しませんでした。コードは次のとおりです。
$(".images_list").change(function() {
var input = $(this);
var name = $(this).attr("name");
var id = $(this).attr("id");
alert(input);
var val = $(this).val();
switch(val.substring(val.lastIndexOf('.') + 1).toLowerCase()){
case 'gif': case 'jpg': case 'png': case 'jpeg':
alert("an image");
alert(name);
readURL(this);
break;
default:
$(this).val('');
// error message here
alert("not an image");
break;
}
});
function readURL(input) {
var this_id = input.attr("id");
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
this_id.attr('src', e.target.result);
this_id.css({
width:"120px",
height:"120px"
});
}
reader.readAsDataURL(input.files[0]);
}
}
私が選んだ画像は表示できません。
他の問題は、フォームを送信すると、すべての入力フィールドが削除されて追加されました。どうすればこれを防ぐことができますか?
ありがとうございます。
編集:これを追加しましたJSFiddle。
jsのフィドルを準備することができれば、助けがさらに簡単になります。 – osmanraifgunes
@osmanraifgunes .. JSFiddleを追加しました。 – bakursait