wf_aimee 2010-06-08 09:59
浏览 291
已采纳

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

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

  • 写回答

3条回答 默认 最新

  • eplang 2010-06-08 10:55
    关注

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

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

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

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?