在JQuery中重置选定的文件输入

时间:2017-08-28 15:40:42

标签: jquery

有没有办法编写一个jQuery方法来删除所选文件以清除它?如何将文件名传递给jQuery以重置文件输入?

我不想一次清除所有文件。

以下是我的文件:

<div class="field fieldTEXT">
    <form:label path="file" cssClass="fieldLabel">
    Attach Competitor: 
    </form:label>

    <form:input path="file" type="file" cssClass="fileInput" accept="application/pdf"/> <a href="" onclick="RemoveFile();" > Remove</a>
</div>
        <div class="field fieldTEXT">
            <form:label path="file2" cssClass="fieldLabel">
                Attach 2
            </form:label>
            <form:input path="file2" type="file" cssClass="fileInput"/> <a href="" onclick="RemoveFile();" > Remove</a>

        </div>
        <div class="field fieldTEXT">
            <form:label path="file3" cssClass="fieldLabel">
                Attach Additional Information:
            </form:label>
            <form:input path="file3" type="file" cssClass="fileInput" accept="application/pdf"/> <a href="" onclick="RemoveFile();" > Remove</a>    
        </div>
        <div class="field fieldTEXT">
            <form:label path="file4" cssClass="fieldLabel">
                Attach Additional Information (If Needed):
            </form:label>
                <form:input path="file4" type="file" cssClass="fileInput" accept="application/pdf" /> <a href="" onclick="RemoveFile();" > Remove</a>

        </div>  

在我的JS中: 如何将名称传递给我的JS文件并重置所选链接?

function RemoveFile(name) {
    $('input[type=file]').val('');
}

2 个答案:

答案 0 :(得分:1)

此代码有效,请忽略我对html所做的更改,即在编辑器中生成HTML。

说明:如果您向表格a中的所有field fieldTEXT标记添加事件处理程序,则会调用该函数,该事件将为我们提供{ {1}}基本上是点击的元素。然后使用jquery函数this,我访问prev()标记之前的元素,即a元素,然后我们使用input清除字段

&#13;
&#13;
val('')
&#13;
$('.field.fieldTEXT a').on('click', function(){
     $(this).prev().val('');
});
&#13;
&#13;
&#13;

答案 1 :(得分:0)

获取所有元素并检查每个对象是否有文件。并清除文件是否存在

$('input[type=file]').each(function(i, obj) {
    if(obj.files.length){
        obj.val('');
     }
});