处理同一页面中借助form+input[type="file"]上传图片出现的input无法清空问题

今天下午帮同事改了这样一个bug:

在一个页面中对多张图进行上传时,由于input的value无法情况的问题,导致每次选完图片后,都跟第一张图片一样,无法出现如下效果:

百度了下思路:先将input取到,然后放到一个临时form里面清空,最后删掉form.

代码如下:

首先是生成图片选择和显示部分的绑定代码:

 var img_tmp = '<tr><td><input type="text" name="code" value="" style="width: 90%; display: none;"><input type="text" name="title[]" style="width:90%;" /></td><td><input type="text" name="sort[]" style="width:90%;" /></td><td><input type="text" name="num[]" style="width:90%;"/></td>' +
                                                '<td><img alt="" src="" id="" name="img[]" style="max-width: 100px; max-height: 100px; display: block; float: left; border: 1px solid #E6E7EB;" /><div class="file_box">' +
                                                '<input type="button" class="btn" value="选择图片" />'+
                                                '<input type="file" name="fileLOGO" class="file" id="" style="width: 80%;" onchange="UploadImages(this)" />' +
                                                '</div></td>' +
                                                '<td><a class="del" href="javascript:void(0)">删除</a></td></tr>';

在onchange="UploadImages(this)" 这里的方法中,我们传入本次点击的input,进行提交:

//多图片上传
        function UploadImages(FileInput) {
            //var isno = fileChange($(FileInput));
            //if (isno == undefined) {
            var options = {
                type: "POST",
                url: '../Handler/AshxUploadFile.ashx?type=Images',
                success: function (msg) {
                    if (msg == "error") {
                        clearImages($(FileInput));
                        showerrortip("上传失败");
                    } else {
                        if (msg != "errortype") {
                            clearImages($(FileInput));
                            $(FileInput).parent().prev("img").attr("src", strPic + msg);
                            clearImages($(FileInput));
                            $(FileInput).attr("style", "");

                        }
                    }

                }, error: function (msg) {
                    clearImages($(FileInput));
                    $(FileInput).attr("style", "");
                    showerrortip("参数异常!");
                }
            };
                // 将options传给ajaxForm
                $('form').ajaxSubmit(options);

            //} 

        }

当时因为忽略了对input的清理,才导致了那个问题,为此,加入clearImages函数:

function clearImages(selector) {
            var fi;
            var sourceParent;

            if (selector) {
                fi = $(selector);
                sourceParent = fi.parent();
            }
            else {
                return;
            }

            $("<form id='tempForm'></form>").appendTo(document.body);

            var tempForm = $("#tempForm");

            tempForm.append(fi);
            tempForm.get(0).reset();

            sourceParent.append(fi);
            tempForm.remove();

        }

这样,就利用临时form清空了input.

时间: 2024-12-05 11:26:06

处理同一页面中借助form+input[type="file"]上传图片出现的input无法清空问题的相关文章

前端实现input[type=&#39;file&#39;]上传图片预览效果

众所周知JavaScript在设计上处于安全角度考虑,是不允许读写本地文件的(原因请自行百度): 但是在实际项目应用中,经常会使用到上传图片,并且可以让用户直接预览图片.对于此种做法有两种方法可以实现:一是前后台交互,后台将图片地址返回前端: 二是,我今天写的内容,使用FileReader对象--允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容:此种方法可以优化图片加载速度,减少方法一占用带宽的问题: 但是,此种方法兼容性存在问题,主要是IE浏览器(ie10以上没问题

&lt;input type = file/&gt;上传图片限制大小、类型判断、像素判断

<input type = file/>上传图片限制大小.类型判断.像素判断 在项目中经常用到input标签来上传文件,而这些文件通常是图片文件.图片有很多格式我们只需要其中的几种,就需要对用户上传的文件进行验证,在HTML5中有一个新的属性:accept文件类型限制.但是通常我们会用javascript或jQuery编写方法进行验证图片的大小限制.类型判断.像素判断 <!DOCTYPE html> <html> <head> <meta charse

有关图片上传的相关知识input type=file,HTML5的 input:file上传类型控制

遇到项目,要求做一个影像系统,对于前端开发需要了解file的相关属性,以及如何开发.工欲善其事,必先利器嘛.度娘一阵子搜索,找资料.这年头,需要的是你解决问题的能力啊! 参考应用:https://www.cnblogs.com/sunliyuan/p/5737928.html http://blog.okbase.net/jquery2000/archive/1296.html(解释的也很清楚) http://blog.csdn.net/qingyjl/article/details/52003

css input[type=file] 样式美化,input上传按钮美化

我们在做input文本上传的时候,html自带的上传按钮比较丑,如何对其进行美化呢?同理:input checkbox美化,input radio美化是一个道理的,后面文章会总结. 思路: input file上传按钮的美化思路是,先把之前的按钮透明度opacity设置为0,然后,外层用div包裹,就实现了美化功能. 代码如下: DOM结构: <a href="javascript:;" class="a-upload"> <input type=

input[type=file] 样式美化,input上传按钮美化

<style>.file { position: relative; display: inline-block; background: #D0EEFF; border: 1px solid #99D3F5; border-radius: 4px; padding: 4px 12px; overflow: hidden; color: #1E88C7; text-decoration: none; text-indent: 0; line-height: 20px;}.file input

&lt;input type=&quot;file&quot;&gt; 与label搭配会产生多大的影响

前面我写过关于<input type="file">上传图片,消除原有样式,获取图片的文章. 今天更新的是我最近发现,点击上传按钮的那一整行都可以调出本地上传图片的窗口. 之前也是发现多一个INPUT 的影响区域,用下面的方法清除了. "用过两次都发现页面自动生成另一个大的<input>,点击同样会弹出文件选择框,可以用下面的代码清除这个多的. input[type="file" i]::-webkit-file-upload-bu

input type=file 标签禁止让用户手动输入

常规的Web应用程序中涉及到文件上传的部分都不可避免地会使用到<input type="file"/>控件,在上传文件的时候通过点击“浏览”按钮,在弹出的文件选择对话框中选择本地要上传的文件.当然,如果你已经知道要上传的文件的本地路径,也可以复制路径到控件的输入框中(例如要选择的文件的路径特别长).这就存在一个问题,如果你所复制的文件路径根本不存在,那么上传的时候就无法正确获取到文件,而且在javascript中没有判断该控件所选择的文件是否存在的方法,涉及到浏览器的安全性

input type=&quot;file&quot;多图片上传

单个的input type="file"表单也是可以实现多图片上传的 代码如下: <form action="manypic.php" method="post" enctype="multipart/form-data">        <input type="file" name="manypic[]" multiple>        <input

&lt;input type=&#39;file&#39;/&gt;把默认样式改成框框

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head><meta http