我需要创建一个具有两个文本区域和一个文件输入的表单,该表单上载两行中有两个数字的txt/csv文件(1行-1个数字(,并使用codeigniter和Javascript用这两个数字弹出2个文本区域。感谢的帮助
file:
59.8
42.8
55.8
51.1
html
<input type="file" id="id">
<br>
<textarea id="result1" cols="50"></textarea>
<textarea id="result2" cols="50"></textarea>
<textarea id="result3" cols="50"></textarea>
<textarea id="result4" cols="50"></textarea>
如果有1个文本区域打印结果,但每一行都需要在一个文本区域中打印,并且不起作用,那么这就是js
$("#id").on('change', function(event){
event.preventDefault();
var selectedFile = event.target.files[0];
var reader = new FileReader();
var result = document.getElementById("param3");
reader.onload = function(event) {
result.innerHTML = event.target.result;
};
reader.readAsText(selectedFile);
});
要实现这一点,可以使用split()
将从中的文本文件读取的值转换为数组,每行文本有一个元素。
然后,您可以循环遍历该数组,并在每个textarea
中设置值。试试这个:
<input type="file" id="id"><br />
<textarea class="result" id="result1" cols="50"></textarea>
<textarea class="result" id="result2" cols="50"></textarea>
<textarea class="result" id="result3" cols="50"></textarea>
<textarea class="result" id="result4" cols="50"></textarea>
let $results = $('.result');
$("#id").on('change', e => {
e.preventDefault();
var reader = new FileReader();
reader.onload = e => {
e.target.result.split(/rn/).forEach((text, i) => {
$results.eq(i).val(text);
});
};
reader.readAsText(e.target.files[0]);
});
请注意,我将相同的class
属性应用于textarea元素,以使逻辑更加简单。一般来说,增量id
属性是一种反模式,应尽可能避免。
下面是jsFiddle中的一个工作示例(因为SO片段是沙盒的,不能使用FileReader
(。您需要自己创建一个文本文件才能看到它的运行。