如何在单个HTML文本字段上应用多个事件
How to apply multiple events on single HTML text field?
我想通过多个事件onBlur
、onKeyup
和onClick
调用一个函数,但我的脚本只处理第一个事件。
我的代码:
<input type="text" onBlur="getprice(this),getdesc(this)" onClick="getprice(this),getdesc(this)" id="item" name="item[]">
<input type="text" onBlur="getprice(this);getdesc(this)" onClick="getprice(this);getdesc(this);" id="item" name="item[]">
当您将函数内联签名到dom元素时,请记住,在双引号内,您正在编写javascript代码。因此,对于每个函数,都应该有一个";"作为结尾,快乐编码兄弟!
看看下面的代码,我在其中定义了var events
中的目标事件。您可以在那里添加多个事件以添加到您的功能中。
您可以在浏览器Console
中检查输出。
控制台输出
__EVENT__ click
__getPrice__ Empty
__getDesc__ Description
__EVENT__ blur
__getPrice__ Ok
__getDesc__ Description
__EVENT__ click
__getPrice__ Ok
__getDesc__ Description
__EVENT__ click
__getPrice__ 9874521
__getDesc__ Description
__EVENT__ blur
__getPrice__ 9874521
__getDesc__ Description
代码段
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<title>Attach Multiple Events</title>
<style>
input[type="text"] {
border: none;
outline: none;
}
</style>
</head>
<body>
<input type="text" id="textInput" name="textInput[]" placeholder="Write your input...">
<script>
(function() {
// Define variables
var
events = ['click', 'blur'],
textInput = document.querySelector('#textInput');
// Define functions
var
getPrice = function(textInputRef) {
console.log('__getPrice__', textInputRef.value == '' ? 'Empty' : textInputRef.value);
},
getDesc = function(textInputRef) {
console.log('__getDesc__', 'Description');
};
events.forEach(function(e) {
textInput.addEventListener(e, function() {
console.log('__EVENT__', e);
getPrice(this);
getDesc(this);
}, false);
});
})();
</script>
</body>
</html>
为了更好地控制Events
,最好将事件分别附加到目标元素。
只是个建议!不要在HTML中编写内联JavaScript。出于以下原因,最好单独编写JavaScript(最好是在单独的文件中)。
- 减小HTML文件大小
- 支持缓存
- 提高可访问性
- 易于代码维护
希望它能有所帮助!
相关文章:
- 将jQuery事件应用于所有类元素
- React应用程序:道具在下一个事件后更新
- 如何在Win8Metro应用程序的Javascript代码中捕获自己的C#事件
- 鼠标事件在OpenLaszlo应用程序中不起作用
- 在将绑定应用于控制器之后,是否会发出Angular$scope事件
- Joint JS-如何在shapes.devs上应用事件
- jQuery:如何在没有for循环的情况下将事件处理程序应用于$('#text'+'任意整数
- 如何使用javascript检查事件是否应用于元素
- Windows 8 HTML5 JavaScript 应用程序中向左滑动的事件名称是什么
- 捕获在Windows应用程序中启动其他应用程序的用户事件
- Chrome 打包应用程序 - 在后台/事件页面中使用 AngularJS
- 事件侦听器,用于完全关闭后重新启动的应用程序
- 在 Web 应用中处理事件跟踪的最佳(高性能)方法
- 如何在 js 中捕获 win8 Metro 应用的可见性更改/应用后台事件
- 尝试在单个类 Jquery 或 js 上应用事件
- 在 Angular 指令中,如何在删除事件后重新应用事件侦听器
- 如何在克隆元素上应用事件
- 如何在JQuery数据表的每行中添加多个按钮以及如何在它们上应用事件
- 在Jquery中应用事件到动态添加表单时遇到了一些问题
- 仅对父级应用事件