我正在编写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 = ""
这些都不清楚文本框。
答案 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()一起使用,因此该事件在更换后仍可用于新输入。