<input type="file">设置的onchange只能执行一次的解决方案

项目中有一个图片上传、查看插件,但该插件只能执行一次上传操作,下次上传需重新刷新页面,很是不方便。
通过查阅相关资料发现,$(‘# ‘).replaceWith方法可以上述问题。
HTML脚本如下:

<div class="form-group"> 
 <label class="col-sm-3 control-label no-padding-right">图标/label> 
 <div class="col-sm-9"> 
  <input id="icon" name="icon" type="text" class="col-xs-10 col-sm-8""/> 
  <div style="display: none;"> 
   <input id="icon_id" type="file" name="files" data-target="[name=icon]" url="<%=path %>/fileUpload/upload.action" onchange="frame.upload(this);" /> 
  </div> 
  <input type="button" class="btn-primary" style="height: 30px" value="上传" onclick="javaScript:$('#icon_id').click();" /> 
  <input type="button" class="btn-primary" style="height: 30px" value="下载" onclick="javascript:openUrl('icon');" /> 
 </div> 
</div>

js脚本如下:

frame.upload = function(el) {
    var id = $(el).attr('id');
    var url = $(el).attr('url');
    var target = $(el).attr('data-target');
    var bind = $(el).attr('bind-img');
    var cb = $(el).attr('frame-cb');
    var name = $(el).attr('name') || 'files';
    var waitText = $(el).attr('waitText') || '正在上传,请稍候...';
    $(target).prop('disabled', true).val(waitText);
    var c = $(bind).attr('src');
    $(bind).attr('src', 'data:image/png;base64,R0lGOOw==');
    $(el).upload(url,
    function(data) {
        console.debug(data);
        try {
            var d = $.parseJSON(data);
            if (d.success) {
                var dt = d.data[name];
                c = dt.url || c;
                showMsg("提示", "info", dt.msg);
            }
            if ( !! cb) {
                cb(d);
            }
            $(bind).attr('src', c);
            $(target).prop('disabled', false).val(c);

            $('#' + id).replaceWith('<input id="' + id + '" type="file" name="files" data-target="' + target + '" url="' + url + '" onchange="frame.upload(this);" />');
        } catch(e) {
            $.tip('上传失败,服务器异常!' + e, false);
        }
    });
};

每次图片上传成功后,执行$('#' + id).replaceWith('<input id="' + id + '" type="file" name="files" data-target="' + target + '" url="' + url + '" onchange="frame.upload(this);" />'); 图片便可以多次上传。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
table { border-collapse: collapse; width: 100%; } td, th { border: 1.5px solid black; padding: 5px; } table img { max-width: 150px; height: auto; } <table id="myTable"> <thead class="sticky-header"> <tr> <td contenteditable="true"><input type="text" oninput="filterTable(0)" placeholder="工艺膜层"></td> <td contenteditable="true"><input type="text" oninput="filterTable(1)" placeholder="AOI Step"></td> <td contenteditable="true"><input type="text" oninput="filterTable(2)" placeholder="不良类型"></td> <td contenteditable="true"><input type="text" oninput="filterTable(3)" placeholder="Layer(Code)"></td> <td contenteditable="true"><input type="text" oninput="filterTable(4)" placeholder="Type"></td> <td contenteditable="true"><input type="text" oninput="filterTable(5)" placeholder="Dpet"></td> <td contenteditable="true"><input type="text" oninput="filterTable(6)" placeholder="Subcode"></td> <td contenteditable="true">Code描述</td> <td contenteditable="true">Image1</td> <td contenteditable="true">Image2</td> <td contenteditable="true">Image3</td> <td contenteditable="true">Image4</td> <td contenteditable="true">Image5</td> <td contenteditable="true">Image6</td> <td contenteditable="true">判定细则</td> </tr> </thead> <tbody> <tr> <td contenteditable="true">ACT</td> <td contenteditable="true">Particle</td> <td contenteditable="true">ACT</td> <td contenteditable="true">Particle</td> <td contenteditable="true">ACT</td> <td contenteditable="true">Particle</td> <td contenteditable="true">ACT</td> <td contenteditable="true">Particle</td> <td> <input type="file" onchange="previewImage(this)" onclick="showPopup(this.src)"style="width: 100px; height: auto;" > </td> <td> <input type="file" onchange="previewImage(this)"onclick="showPopup(this.src)" style="width: 100px; height: auto;"> </td> <td> <input type="file" onchange="previewImage(this)" onclick="showPopup(this.src)"style="width: 100px; height: auto;"> </td> <td> <input type="file" onchange="previewImage(this)" onclick="showPopup(this.src)"style="width: 100px; height: auto;"> </td> <td> <input type="file" onchange="previewImage(this)" onclick="showPopup(this.src)"style="width: 100px; height: auto;"> </td> <td> <input type="file" onchange="previewImage(this)"onclick="showPopup(this.src)"style="width: 100px; height: auto;"> </td> <td contenteditable="true">Particle</td> </tr> </tbody> </table>这个表格怎么设置自定义调整列宽
最新发布
07-16
设置自定义调整列宽,你可以使用CSS中的`table-layout`属性和`width`属性来实现。具体步骤如下: 1. 在CSS样式中,将`table-layout`属性设置为`fixed`。这将使表格的列宽度固定。 2. 为每个表格单元格(`td`和`th`)设置一个固定的宽度(或者使用百分比),以确定每列的默认宽度。 3. 在需要调整列宽的地方,添加一个可调整宽度的元素,比如一个拖动条。 4. 使用JavaScript来处理拖动条的事件,并根据拖动条的位置调整表格列的宽度。 以下是一个示例代码段,演示了如何实现自定义调整列宽的功能: ```html <!DOCTYPE html> <html> <head> <style> table { border-collapse: collapse; width: 100%; table-layout: fixed; } td, th { border: 1.5px solid black; padding: 5px; } th { background-color: #f2f2f2; } .column-resizer { background-color: #ddd; width: 6px; height: 100%; position: absolute; right: 0; top: 0; cursor: col-resize; } </style> </head> <body> <table id="myTable"> <thead class="sticky-header"> <tr> <th contenteditable="true" style="width: 150px">工艺膜层</th> <th contenteditable="true" style="width: 150px">AOI Step</th> <th contenteditable="true" style="width: 150px">不良类型</th> <th contenteditable="true" style="width: 150px">Layer(Code)</th> <th contenteditable="true" style="width: 150px">Type</th> <th contenteditable="true" style="width: 150px">Dpet</th> <th contenteditable="true" style="width: 150px">Subcode</th> <th contenteditable="true" style="width: 150px">Code描述</th> <th contenteditable="true" style="width: 150px">Image1</th> <th contenteditable="true" style="width: 150px">Image2</th> <th contenteditable="true" style="width: 150px">Image3</th> <th contenteditable="true" style="width: 150px">Image4</th> <th contenteditable="true" style="width: 150px">Image5</th> <th contenteditable="true" style="width: 150px">Image6</th> <th contenteditable="true" style="width: 150px">判定细则</th> </tr> </thead> <tbody> <tr> <td contenteditable="true">ACT</td> <td contenteditable="true">Particle</td> <td contenteditable="true">ACT</td> <td contenteditable="true">Particle</td> <td contenteditable="true">ACT</td> <td contenteditable="true">Particle</td> <td contenteditable="true">ACT</td> <td contenteditable="true">Particle</td> <td> <input type="file" onchange="previewImage(this)" onclick="showPopup(this.src)" style="width: 100px; height: auto;"> </td> <td> <input type="file" onchange="previewImage(this)" onclick="showPopup(this.src)" style="width: 100px; height: auto;"> </td> <td> <input type="file" onchange="previewImage(this)" onclick="showPopup(this.src)" style="width: 100px; height: auto;"> </td> <td> <input type="file" onchange="previewImage(this)" onclick="showPopup(this.src)" style="width: 100px; height: auto;"> </td> <td> <input type="file" onchange="previewImage(this)" onclick="showPopup(this.src)" style="width: 100px; height: auto;"> </td> <td> <input type="file" onchange="previewImage(this)" onclick="showPopup(this.src)" style="width: 100px; height: auto;"> </td> <td contenteditable="true">Particle</td> </tr> </tbody> </table> <script> var columnResizer = document.createElement('div'); columnResizer.className = 'column-resizer'; document.addEventListener('DOMContentLoaded', function() { var table = document.getElementById('myTable'); var resizableColumns = table.querySelectorAll('th'); resizableColumns.forEach(function(column) { var resizer = columnResizer.cloneNode(true); column.appendChild(resizer); resizer.addEventListener('mousedown', function(e) { var originalWidth = column.offsetWidth; var startX = e.pageX; document.addEventListener('mousemove', resizeColumn); document.addEventListener('mouseup', stopResize); function resizeColumn(e) { var width = originalWidth + (e.pageX - startX); column.style.width = width + 'px'; } function stopResize() { document.removeEventListener('mousemove', resizeColumn); document.removeEventListener('mouseup', stopResize); } }); }); }); </script> </body> </html> ``` 在这个示例中,每个表头单元格都添加了一个可调整宽度的元素`column-resizer`,当你点击并拖动该元素时,可以调整相应列的宽度。你可以根据需要修改其中的样式和事件处理程序来满足你的要求。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值