javascript - 使用 html 输入重新加载文件

标签 javascript jquery html input

我有一个文本区域,很明显,它可以使用键盘输入进行编辑。我还希望能够使用 html 输入加载文件。我已经这样做了,使用 onchange 事件。 (下面链接的 jsfiddle 代码)。

假设我使用文件加载器加载了一个文件 - 它在示例中正常工作。 然后,我编辑这个文件。意识到不需要我所做的更改,我想重新加载此文件。但是,当使用 html 输入时,没有任何变化,因为所选文件保持不变(不会触发 onchange 事件)。有没有办法使用 html 输入重新加载文件。 (我发现的唯一解决方法是加载不同的文件,然后重新加载原始文件......这不是很优雅)。

http://jsfiddle.net/aroberge/8PZyK/1/

var load_file = function() {
  $("#fileInput").show();
  var fileInput = document.getElementById('fileInput');
  fileInput.addEventListener('change', function(e) {
    var file = fileInput.files[0];
    var reader = new FileReader();
    reader.onload = function(e) {
        $("#editor").text(reader.result);
        $("#fileInput").hide();
    };
    reader.readAsText(file);    
}); 
};

$("#load").on("click", function(evt) {
  load_file();
});

最佳答案

您可以在从中读取文件后清除 fileInput 值:

更新的 fiddle : http://jsfiddle.net/8PZyK/8/

var load_file = function() {
    $("#fileInput").show();
    var fileInput = document.getElementById('fileInput');
    fileInput.addEventListener('change', function(e) {
        if (fileInput.files && fileInput.files.length > 0) {
            var file = fileInput.files[0];
            var reader = new FileReader();
            fileInput.value = "";
            reader.onload = function(e) {
                $("#editor").val(reader.result);
                $("#fileInput").hide();
            }
        };
        reader.readAsText(file);    
    }); 
};

$("#load").on("click", function(evt) {
    load_file();
});

关于javascript - 使用 html 输入重新加载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22548683/

相关文章:

jquery - 动画 css 不起作用

javascript - jQuery 根据数组值隐藏下拉选项

php - 将表单发送到 SQLdatabase(不允许 405)

javascript - 具有输入值的函数的返回类型

javascript - 正则表达式以匹配逗号分隔的主机名

javascript - Onscroll 视频必须播放一次

javascript - 统计点击按钮创建 "Top Event"区域的次数

javascript - 在单选按钮和文本字段之间进行选择

javascript - 如果之前已经打开,则重定向到不同的页面

javascript - 获取数组中的第一项和最后一项 - JS