下拉列表是可输入的,当输入的时候触发onchange事件,当选择的时候触发onpropertychange事件

下拉列表是可输入的,我想要当输入的时候触发onchange事件,当选择的时候触发onpropertychange事件,请问该功能如何实现?

输入时不触发onpropertychange是不可能的.
你修改了文本框的值就是修改了文本框的value属性, value属性一变动就会触发onpropertychange事件, 这个是避免不了的.

只能从事件优先级中规避这问题.
往文本框里输入东西的话(假设只考虑输入键盘输入), 敲一个字符, 肯定会触发和键盘相关的三个事件, keydown, keyup, keypress.
keydown的时候, 字符还没出来, keyup和keypress的时候, 字符就出来了, 字符一出来就会触发onpropertychange事件.

所以我们可以创建一个flag, 默认为false, 在keydown时, 为flag附值为true, 在onpropertychange时, 判断一下flag是否为true, 如果为true, 就代表是敲入字符所触发的, 那我们就将flag赋值为false, 其他啥都不做, 直接返回.

这样应该可以一半达到你所要实现的效果了.

至于别人不用键盘输入, 而是右键粘贴这个... 你就自己琢磨一下吧. 看看onchange和onpropertychange哪个优先级高, 或者还有什么事件可以利用的.

你是已经做出可输入的下拉框了?
如果没有的话, 建议去Jquery找下combox组件来用比较好.

除非你是想练手玩玩JS, 那还能自己开发一个.
以前我刚参加工作的时候就自己做过一个, 刚开始对JS只是一知半解, 花了很长时间, 但完成后对我的JS水平提升相当大.

如果是项目急着用的话, 还是直接拿现有的组件比较好, 没必要重复造轮子嘛.

就是这样的,我是想当下拉列表时选择的话能触发text的onpropertychange事件,当是输入的话触发text的onChange事件;


当往Text里输入的时候要触发text的onChange事件? 回答得有点古怪啊.

是想做到下拉框选择某一个值时, text上面的值会变成下拉框选中的值.
当往text里输入值时, 下拉框会根据输入的内容, 联动选择一个最近似的值?