有没有办法让keyup
, keypress
, blur
和change
事件在一行中调用相同的函数,仍是必须单独执行? jquery
我遇到的问题是我须要使用数据库查找验证一些数据,而且但愿确保在任何状况下都不会错过验证,不管是键入仍是粘贴到框中。 数据库
从jQuery 1.7开始, .on()
方法是将事件处理程序附加到文档的首选方法。 对于早期版本, .bind()
方法用于将事件处理程序直接附加到元素。 api
$(document).on('mouseover mouseout',".brand", function () { $(".star").toggleClass("hovered"); })
我正在寻找一种方法来获取事件类型,当jQuery一次监听多个事件时,谷歌把我放在这里。 函数
因此,对于那些感兴趣的人, event.type
是个人答案: this
$('#element').on('keyup keypress blur change', function(event) { alert(event.type); // keyup OR keypress OR blur OR change });
jQuery doc中的更多信息。 spa
您能够使用bind方法将函数附加到多个事件。 只需传递事件名称和处理函数,以下代码所示: code
$('#foo').bind('mouseenter mouseleave', function() { $(this).toggleClass('entered'); });
另外一种选择是使用jquery api的连接支持。 seo
您能够使用.on()
将函数绑定到多个事件: 事件
$('#element').on('keyup keypress blur change', function(e) { // e.type is the type of event fired });
或者只是将函数做为参数传递给普通事件函数: element
var myFunction = function() { ... } $('#element') .keyup(myFunction) .keypress(myFunction) .blur(myFunction) .change(myFunction)
若是您将相同的事件处理程序附加到多个事件,您常常遇到一次触发多个事件的问题(例如,用户在编辑后按Tab键; keydown,change和blur可能所有触发)。
这听起来像你真正想要的是这样的:
$('#ValidatedInput').keydown(function(evt) { // If enter is pressed if (evt.keyCode === 13) { evt.preventDefault(); // If changes have been made to the input's value, // blur() will result in a change event being fired. this.blur(); } }); $('#ValidatedInput').change(function(evt) { var valueToValidate = this.value; // Your validation callback/logic here. });