一、 onkeydown、onkeypress、onkeyup
注意: 监听事件监测不到右键的复制、粘贴、剪切等操作(获取实时改变值不建议使用这三种方法)
onkeydown : 按下键盘的任意键立即触发,不过它是先触发再赋值,所以你当前按下的键值不会被算在你拿取的值中
onkeypress:不会为所有键(例如ALT,CTRL,SHIFT,ESC)触发onkeypress事件,如果需要请使用onkeydown事件
onkeyup : 释放按键时触发,例如你要粘贴数据,在你按下Ctrl还没有释放时不会触发此事件要等你按完V,松开手才会触发
二、实时监听输入框变化的完美方案 oninput & onpropertychange
介绍: oninput & onpropertychange , 可以对修改的值进行实时监听,即值只要发生变化就会触发,不想 blur等,需要鼠标光标失焦才会触发!
注意 :oniput 事件在 IE9 以下版本不支持,需要使用IE特有的 onpropertychange 来支持
使用:
1.标签行内使用(这种方法一般是不会有事件监测不到的现象,而用第二种,可能你渲染出来的input恐怕不一定能监测到,如果可以还望大神留言)
1 <!--这里面的Demo,毋庸置疑就是Js方法,即事件触发后响应的方法--> 2 <input oninput="Demo(event)" onporpertychange="Demo(event)" />
2.Jquery中使用 (同时绑定 oninput 和 onpropertychange 两个事件)
1 $('input').bind('input propertychange',function(event) 2 { 3 alert($(this).val()) 4 })
使用的标签:
1.input:checkbox(复选框)、input:radio(单选框) 的Checked属性发生变化
2. textarea、select(这个在layui select中好像没有作用)
三、JS中get()方法和eq()方法的区别
get(0) 是返回dom对象的数组[object HTMLLIElement]
eq(0) 是返回一个jquery一个对象 [object object]
<!--HTML标签--> <ul> <li>1</li> <li>2</li> <li>3</li> </ul>
//使用get()和eq()方法获取第一个li,并加样式 $('ul').eq(0).css('color','red'); $($('ul li').get(0)).css('color','red');
四、JS集合中是否存在某个对象
1 //声明一个集合 2 let items=[{Year:2020,Month:1},{Year:2019,Month:2}]; 3 //声明一个对象 4 let item={Year:2019,Month:2}; 5 6 //现在我们要的结果是:我们要知道items集合中已经存在了 item对象 7 8 function demo() 9 { 10 //先将items集合和item对象转成json字符串,再用indexOf()方法搜索,如果存在,则不等于-1,反之一样等于-1则不存在 11 if(JSON.stringify(items).indexOf(JSON.stringify(item))!=-1) 12 { 13 //表示值已经存在 14 } 15 }