编辑输入字段时的触发方法
Fire method when input field is edited
当编辑html输入字段时,我想触发一个方法。此方法显示一个数据列表,其中包含该输入字段的选项。我该怎么做?谢谢
<input type="text" onChange="mymethod()" />
<script type="text/javascript">
function mymethod() {
//datalist code goes here//
}
</script>
你确实可以用纯JS解决这个问题,但我更喜欢jQuery来完成这样的任务。您可能想看看这个: 自动完成 |jQuery UI
好的浏览器支持开箱即用的<datalist>
标签:
<input list="browsers" name="browser">
<datalist id="browsers">
<option value="Internet Explorer">
<option value="Firefox">
<option value="Chrome">
<option value="Opera">
<option value="Safari">
</datalist>
请参阅:http://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_datalist
以及支持的浏览器:http://caniuse.com/#feat=datalist
有一些替代方案具有更广泛的浏览器支持和更光滑的界面。
以下是使用 Select2 (http://ivaynberg.github.io/select2/) 的方法:
.HTML:
<select id="select2Example" multiple>
<option>Option 1</option>
<option>Option 2</option>
</select>
.JS:
$(function(){
$('#select2Example').select2();
});
在普伦克:http://plnkr.co/edit/AwO4sHPZsP2BqgItkwil?p=preview
Typeahead JS也很好:
https://twitter.github.io/typeahead.js/
如果您决定自行实现这一点,则可以使用@MrBr1ghtSide提供的选项来添加事件处理程序:
.HTML:
<input onchange="handleChange"></input>
.JS:
var handleChange=function(){
/*code to display options */
};
但这有以下缺点:
- 它要求
changeHandler
处于全球范围内,这带来了冲突的可能性。 - 您将无法使用多个函数来处理更改事件。
- 您必须在两个位置(HTML 和 JS)维护函数的名称。
最好使用addEventListener
(https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener - 您可以安全地忽略冒泡/捕获的东西)。但请注意,旧版本的 IE 改用 attachEvent
。下面是一个示例:
.HTML:
.JS:
var inputBox=document.getElementById('exampleInput');
var handleChange=function(){
/*code to display options */
};
inputBox.addEventListener("change", handleChange);
另一种选择是使用库。许多人使用与jQuery相同的语法:http://api.jquery.com/on/。例如,Gator 是一个不错的小库,用于添加事件侦听器:http://craig.is/riding/gators 。使用jQuery或Gator,您可以执行以下操作:
.HTML:
<input id="exampleInput"></input>
带有jQuery的JS:
$('#exampleInput).on('change',handleChange);
JS与鳄鱼:
var inputBox=document.getElementById('exampleInput');
Gator(inputBox).on('change',handleChange);
请注意,对用于处理更改的函数进行去抖动是一个非常好的主意,以获得更好的用户体验和性能。请参阅此解释:http://benalman.com/code/projects/jquery-throttle-debounce/examples/debounce/
- jquery插件或javascript方法自动调整文本输入(而非文本区域)(固定宽度)可变高度的大小
- 为什么控制台没有't使用输入的对象's的`toString`方法
- 是否有一种方法可以使用公共代码库在Java和JavaScript中进行输入验证
- 当输入字段为空时,如何在angular中调用方法
- 我能从“;输入“;事件是否有更好的方法来跟踪文本更改
- 不使用自定义CSS或HTML(使用框架方法)的角度材质文本输入或文本区域标签大小
- 使用JavaScript验证用户交互/输入-这是一种很好的方法
- 在d3.json中使用d3.csv组合多个csv文件数据输入的最佳方法是什么
- 如何从该文本的 onclick 方法中更改 d3.js 文本输入
- 有没有什么方法可以通过输入字段(type=file)来找出选择了多少个文件
- 在jquery中,从同一对象的属性设置输入字段和标签的正确方法是什么
- JavaScript 表单操作更改RC方法发布文本输入提交
- get没有方法“writefile”,即使输入是一个字符串
- 在输入类型提交按钮上调用 C# 方法
- Javascript - 以编程方式执行所有函数输入的方法
- 当输入值已更改时,html() 方法错误
- 如何用document.createElement(“input”)方法使输入文本字段动态扩展
- 什么'是使输入上禁用的属性与Meteor辅助对象反应的最佳方法
- JavaScript:格式化输入方法会给出错误的值
- 一种在javascript上获得具有两个输入(字符串)的散列键的方法