清除<input type =“file”/>

时间:2014-01-29 20:45:50

标签: input clear hta input-type-file

我正在编写HTA并希望用户能够轻松地使用浏览器选择.txt文件。此.txt文件将逐行读取并读入数组。所以,我正在使用<input type=file name="ListFile">,它为我提供了浏览功能,并完成了我需要它...

但是当用户选择另一种方法(我已设置)输入数据时,我需要能够清除<input type=file name="ListFile">的文本框。

我需要清除它的原因是为了防止用户错误/错误。我目前已经设置了在使用浏览选项时清除手动输入文本框,但无法让它以相反的方式工作。

我尝试了以下(适用于常规文本框)

Document.getElementByID("ListFile").value = ""
Document.getElementByID("ListFile").reset()
Docuemnt.getElementByID("ListFile").innerHTMl = ""
ListFile.Value = ""

这些都不清楚文本框。

3 个答案:

答案 0 :(得分:0)

出于安全原因,您无法在文件输入字段中修改所选文件。

有一种解决方法可以重置它 - 您可以克隆文件输入,并用克隆的输入替换输入。在您的情况下,根据用户的选择显示/隐藏输入可能更容易。

例如,你可以有一组单选按钮供用户选择输入法 - 然后根据他们选择的单选按钮显示相应的字段。

如果你绝对必须重置文件输入,你可以使用jQuery的.clone()方法,或者手动创建一个新的dom元素,复制所有属性,在原始文件输入后插入它,然后删除原始文件。

答案 1 :(得分:0)

谢谢Sam Dufel ......你给了我一个主意。

创建了一个创建on Window_onLoad

的范围

跨度代码:      

Window_onLoad代码:     BrowseFile.innerHTML =“”

然后我将其复制到另一个Sub,当他们选择手动数据输入选项时运行。基本上清除范围并重新创建输入。

答案 2 :(得分:0)

您无法更改文件输入类型的值,因为这会引入安全漏洞。相反,只需用新的文件输入替换文件输入。而不是$('#file').val(''),请执行以下操作:

 $('#file').replaceWith('<input name="ListFile" type="file" id="file"/>');

更好的方法是克隆原始版本的副本并将其存储在内存中。当您需要替换它时,只需使用克隆的副本,然后再次克隆它。所以,像这样:

$(document).ready(function() {
    var empty_input = $('#file').clone();

    $('#the-form').on('change', '#file', function(el) {
        $('#the-form').submit(); // assuming the target is a hidden iframe
        $(this).replaceWith(empty_input.clone());
    });
})

请注意,我已将委托版本与jQuery.on()一起使用,因此该事件在更换后仍可用于新输入。