![](/img/trans.png)
[英]how to trigger function right after select a option from datalist under a input?
[英]Angular Input with datalist options, how to differentiate user input and select option from list in edge browser
以下代码用于显示带有选项的输入。 每当用户输入时,应搜索该文本并显示结果。 对于在输入事件上实现的'onInputChanges()'。 这在Chrome浏览器中完美运行,但在Edge浏览器中,它无效。
提到了很多StackOverflow问题,但没有一个是特定于边缘浏览器的。
<div>
<input type="text" list="browsers" (keyup.enter)="addValue(fieldInput.value); fieldInput.value=''"
#fieldInput (input)="onInputChanges(fieldInput.value, $event)">
<datalist id="browsers">
<option value="Internet Explorer">
<option value="Firefox">
<option value="Chrome">
<option value="Opera">
<option value="Safari">
</datalist>
</div>
当用户输入内容或从数据列表中选择选项时, 输入事件将在Chrome中被触发。 在Chrome浏览器中,代码(Object.prototype.toString.call(event))标识用户是否从列表中输入值或选定值。 Chrome浏览器,如果用户输入,则Object.prototype.toString.call(event)返回“InputEvent”,否则返回“Event”。
onInputChanges(fieldInput.value, $event) {
let isInputEvent = Object.prototype.toString.call(event).indexOf("InputEvent")> -1);
if(isInputEvent) {
//user typed the value in input box
}else {
//selected from list
}
}
但是在Edge浏览器中, Object.prototype.toString.call(event)始终返回“ Event ”,因此,无法区分Edge中列表中的用户类型或用户选择的值。
是否还有其他方法可以识别事件信息? 注意: event.type总是返回'input',所以不能使用它。
基本示例: https : //www.w3schools.com/tags/tryit.asp?filename = tryhtml5_datalist
什么是Edge浏览器版本? 我在我的Edge浏览器(Microsoft Edge 42.17134.1.0版本)中使用以下代码尝试了您的代码,似乎一切正常:
<div>
<input type="text" list="browsers" (keyup.enter)="addValue(fieldInput.value); fieldInput.value=''"
#fieldInput (input)="onInputChanges(fieldInput.value, $event)">
<datalist id="browsers">
<option value="Internet Explorer">
<option value="Firefox">
<option value="Chrome">
<option value="Opera">
<option value="Safari">
</datalist>
</div>
<span>
{{selectedvalue}}
</span>
component.ts文件中的代码:
onInputChanges(value, event){
this.selectedvalue=value;
}
屏幕截图如下:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.