Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jquery中获取和拆分输入字段的值_Javascript_Jquery - Fatal编程技术网

Javascript 如何在jquery中获取和拆分输入字段的值

Javascript 如何在jquery中获取和拆分输入字段的值,javascript,jquery,Javascript,Jquery,我有和输入搜索字段,我可以在其中搜索车辆的品牌或/和型号,然后根据该术语进行搜索 但问题是,如果有些make的名称中有多个单词,而有些make只有一个单词,那么如何将make从模型中分离出来 我的代码如下: <input type="text" placeholder="Search make or model" id="search" /> <button type="submit" id="btn-submit">Search</button> let

我有和输入搜索字段,我可以在其中搜索车辆的品牌或/和型号,然后根据该术语进行搜索

但问题是,如果有些make的名称中有多个单词,而有些make只有一个单词,那么如何将make从模型中分离出来

我的代码如下:

<input type="text" placeholder="Search make or model" id="search" />
<button type="submit" id="btn-submit">Search</button>
let make = "Audi A5".split(/ +/)[0]
let model = "Audi A5".split(/ +/)[1]
如果我搜索make有一个单词,model有一个单词,我可以拆分字符串,并使用第一个值作为make,第二个值作为model。就像我的例子一样

因此,如果我搜索
奥迪A5
,我可以得到如下品牌和型号:

<input type="text" placeholder="Search make or model" id="search" />
<button type="submit" id="btn-submit">Search</button>
let make = "Audi A5".split(/ +/)[0]
let model = "Audi A5".split(/ +/)[1]
但问题是如果我搜索例如阿尔法·罗密欧·朱利埃塔之类的东西。然后如何拆分字符串并获得正确的品牌和型号

如果我有所有make的列表,我是否可以比较搜索的词并检查make是否有两个以上的词

有什么想法吗

const all_makes=['Alfa Romeo'、'Aston Martin'、'Audi'、'Volkswagen'、'Volvo']
$(函数(){
$(“#btn提交”)。在(“单击”,功能(e){
让make_model=$(“#search”).val()
设make=make_model.split(+/)[0]
console.log(make)
});
});
#搜索{
宽度:200px;
填充:10px;
}


搜索
一个简单的空格分割并不能解决这个问题-你必须在你的用户字符串中寻找所有make的实例。您可以强制使用小写,让用户有点马虎

然后,您将使用匹配的make,在它之后分割字符串,修剪结果,并将其用作模型


如果您有一个所有品牌的列表,那么让他们从列表中选择可能更容易,也不太可能导致用户错误。

正如我所假设的,您希望在案例中使用make变量来控制品牌名称

因此,检查模型是否作为数组元素的子字符串存在。如果子字符串存在,则打印该子字符串

还请注意,搜索区分大小写

样本输入

奥迪A5

样本输出

奥迪

样本输入

阿尔法罗密欧朱利埃塔

样本输出

阿尔法罗密欧

const all_makes=['Alfa Romeo'、'Aston Martin'、'Audi'、'Volkswagen'、'Volvo']
$(函数(){
$(“#btn提交”)。在(“单击”,功能(e){
让make_model=$(“#search”).val()
设make=make_model.split(+/)[0]
var el=所有制造。查找(a=>a.includes(制造));
控制台日志(el)
});
});
#搜索{
宽度:200px;
填充:10px;
}


搜索
您可以使用品牌列表生成可进行拆分的正则表达式:

const all_makes=['Alfa Romeo'、'Aston Martin'、'Audi'、'Volkswagen'、'Volvo'];
const regex=new RegExp(`(${all_makes.join('.|')).replace(''''''.\\s+'))}\\s+\\s*(.*)`,“i”);
$(函数(){
$(“#btn提交”)。在(“单击”,功能(e){
让make#model=$(“#search”).val();
让[u,make,model]=make_model.match(regex);
console.log(“make=”,make);
console.log(“model=”,model);
});
});
#搜索{
宽度:200px;
填充:10px;
}


搜索
我猜你指的是品牌而不是“制造”?@DoubleVoid是的。你为什么不先解释一下你的用例,比如说,你想实现什么?张贴的代码没有多大意义。好吧,因为你只有一个输入字段,你将无法区分品牌和型号。你可以建立一个类似于基于标签的搜索或查找表。作为一个在汽车软件行业工作了7年的人,不要将字符串拆分为Make、Model和Trim。虽然它适用于奥迪A7,但不适用于路虎揽胜(路虎为品牌,揽胜为车型)或许多其他复杂示例。您需要规范化数据并使用规范化数据表。或者,您可以从Blackbook(我不属于Blackbook)这样的第三方购买关于车辆的标准化数据。