oninput,onpropertychange,onchange的用法和区别

如图所示,我想在搜索框实时筛选下面选项内的选项,

开始想到用onchange事件,但是该事件是在搜索框(input)失去焦点时,切当前对象属性发生改变时触发。

我是需要只要内容改变就触发筛选函数,所以onchange对我这个并不实用。

因此查阅相关事件:

oninput,onpropertychange,onchange的用法:

  (1)lonchange触发事件必须满足两个条件:

      a)当前对象属性改变,并且是由键盘或鼠标事件激发的(脚本触发无效)

    b)当前对象失去焦点(onblur);

  (2)onpropertychange的话,只要当前对象属性发生改变,都会触发事件,但是它是IE专属的;

  (3)oninput是onpropertychange的非IE浏览器版本,支持firefox和opera等浏览器,但有一点不同,它绑定于对象时,并非该对象所有属性改变都能触发事件,它只在对象value值发生改变时奏效。

我的需求是只要只改变就马上触发,所以用了onpropertychange和oninput事件

html元素中添加两个事件

<input id="search_input" oninput="searchUserList(this.value);" onpropertychange="searchUserList(this.value);" placeholder="搜索"/>

js中添加筛选函数

/**
 * 当驳回、改派、加签...时
 * 根据搜索框内容,过滤人员列表
 */
var searchUserList = function(value){
    
    var $userList = $('#userList').find('.contact_person').find('span');//获取人员列表
    //$userList.closest('.contact_person').css('display', 'block');
    
    $userList.each(function(index, elem){
        
        $(this).closest('.contact_person').css('display', 'block');
    })
    
    $userList.each(function(index, elem){
        
        if($(this).text().indexOf(value) == -1){//含有该搜索字符串
            $(this).closest('.contact_person').css('display', 'none');
        }
    })
};
原文地址:https://www.cnblogs.com/daisy-hust/p/4958741.html