Javascript 如何将csv文件中的数据加载到表单字段中?

Javascript 如何将csv文件中的数据加载到表单字段中?,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我正在尝试将HTML表单与csv文件链接,以自动填充表单字段。根据用户在第一个字段中选择的内容,第二个字段应自动填充适当的值。当用户开始在第一个字段中键入时,输入字段会自动从csv文件中提取数据以显示可用选项。在用户完成在字段中写入3个单词后,将显示选项 此外,为了避免代码中出现任何CORS问题,我在CSV文件URL中添加了额外的URL,使任何web应用程序都可以访问该URL 我能够在web上提供的示例的帮助下编写此代码。但是,我的代码工作不正常。我试图自己解决这个问题。但我对编码的了解还不够

我正在尝试将HTML表单与csv文件链接,以自动填充表单字段。根据用户在第一个字段中选择的内容,第二个字段应自动填充适当的值。当用户开始在第一个字段中键入时,输入字段会自动从csv文件中提取数据以显示可用选项。在用户完成在字段中写入3个单词后,将显示选项

此外,为了避免代码中出现任何CORS问题,我在CSV文件URL中添加了额外的URL,使任何web应用程序都可以访问该URL

我能够在web上提供的示例的帮助下编写此代码。但是,我的代码工作不正常。我试图自己解决这个问题。但我对编码的了解还不够

谁能帮我解决这个问题


$(function(){function processData(allText){var record_num=2;
//或者,不管每行中有多少个元素
var-allTextLines=allText.split(/\r\n |\n/);var-lines=[];var-headers=allTextLines.shift().split(',');while(allTextLines.length>0){var-tobj={},entry;entry=allTextLines.shift().split(',');tobj['label']=entry[0];tobj['value']=entry[1];lines.push(tobj)}返回行;}
//存储CSV数据列表
var列表=[];
//获取CSV内容
$.get(”https://cors-anywhere.herokuapp.com/www.coasilat.com/wp-content/uploads/2019/06/file.txt  ,function(data){list=processData(data);});$(“#species”).autocomplete({minLength:3,source:list,select:function(event,ui){$(“#species”).val(ui.item.label);$(“#identifiant”).val(ui.item.value);返回false;}})


物种:识别剂:
我的解决方案是一种“自动完成”——它被称为typeahead

我显示了过滤列表,所以您可以看到发生了什么,但您可以将其放置在任何位置—例如,在输入字段下方的下拉列表中

$(函数(){
//处理CSV数据
函数processData(allText){
//分裂线
var allTextLines=allText.split(/\r\n |\n/);
常量speciesData=[]
//如果数据不是第一行(CSV标题),则将其读入数组
//如果不是“物种”
设j=0;//这将是项的索引
for(设i=0;i{
html+=`label:${item.label}-value:${item.value}`
})
//修改显示的“建议列表”
容器
.empty()
.append(html)
}
//筛选已处理列表
//@param substr-输入字段中的文本
//@param list-要筛选的列表
//@param attr-已处理列表中的一个键(标签或值)
函数筛选器种类(substr、list、attr){
//做实际的过滤
const filteredList=list.filter(项=>{
返回项[attr].toLowerCase().includes(substr.toLowerCase())
})
返回过滤器列表
}
。建议容器span{
显示:块;
}

种类:
鉴定人:

以下是修改后的答案,使用jquery ui自动完成

解决方案是:
$.get()
是一个异步函数(数据在页面加载时不可用),因此jquery ui autocomplete不能与更新的
列表[]
数组一起工作,因为它(似乎是这样)不能与动态生成的数据一起工作。因此,必须使用
$.get()
的回调函数中新到达的数据刷新autocomplete的

$(“#物种”).autocomplete('option','source',list)
-这是关键的一行,因为它用新数据更新了autocomplete的

//仅用于工作示例
var myCSV=“物种,标识\r\n”;
myCSV+=“物种A,320439\r\n”;
myCSV+=“物种B,349450\r\n”;
myCSV+=“物种C,43435904\r\n”;
myCSV+=“物种D,320440\r\n”;
myCSV+=“物种E,349451\r\n”;
myCSV+=“物种F,43435905\r\n”;
console.log(myCSV);
//开始jQuery代码
$(函数(){
函数processData(allText){
//var record_num=2;//或每行中有多少个元素
var所有文本行=