【发布时间】:2017-04-15 20:23:58
【问题描述】:
我做了一个动态的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 fiddle 会更容易提供帮助。
-
@osmanraifgunes .. 我添加了 JSFiddle。
标签: javascript jquery html