2016-02-04 67 views
0

简单的jQuery代码到位,但我缺少一些破坏的异常。输入字段的ID为filter,当你开始在输入中输入时,它应该做些什么。正常工作如下:按键过滤键入工具,添加鼠标和自动填充动作

$('#filter').on('change keyup', function(){ 
    //do stuff 
}); 

这是问题所在。如果浏览器自动填充下拉菜单,并且用户单击某个选项,或者用户使用鼠标粘贴代替键盘命令,则不会拾取它。

直到您单击此框,“更改”才会触发,因此为用户添加了额外的步骤。

有没有办法通过填充字段的鼠标动作来触发该功能,而无需点击输入字段?

+0

另一种方法是,你可以取消jquery事件处理程序,并在#filter上放置一个间隔(比如50ms)检查。您仍然需要在文档中明确处理页面以默认值加载的情况。 –

+0

查看http://stackoverflow.com/questions/441631/how-to-detect-right-mouse-click-paste-using-javascript – Maverick976

+0

@Ji_in_coding - 我已经有了一个间隔延迟。即使用鼠标输入也不能解决问题 – TH1981

回答

1

听起来像你可能想要使用'粘贴'事件。

$('#filter').on('paste keyup change', function (e) { 
var data = e.originalEvent.clipboardData.getData('Text'); 
alert(data); 
}); 

至于自动填入检测您可能需要使用

window.onload = function() {  
doCoolStuff(); //check value of input, etc 
}; 

这是直JS。

+0

该列表是空格分隔的,而不是以逗号分隔 – SeinopSys

+0

好吧,这是触发函数,但是是$('#filter')。 val()'仍然注册为空白。此外,它不解决自动填充问题。 – TH1981

+0

编辑,以包括变量的变化已经奏效!这是解决问题的一半。有没有办法触发这种自动填充方法? – TH1981