【问题标题】:range input change event not fires范围输入更改事件不触发
【发布时间】:2012-11-18 15:39:59
【问题描述】:

我正在使用 jquery 和 jquery mobile 来捕获更改事件。我正在使用这个 html 和 jquery 代码:

html:

<input type="range" name="someName" min="0" max="10"/>

jquery:

$('input[type="range"]').change(function(){
    alert('asdasd');
});

当我将输入属性更改为名称时,它工作正常。像这样:

$('input[name="range"]').change(function(){
        alert('asdasd');
});

我不知道为什么没有缓存该事件。 谢谢

【问题讨论】:

  • 在 Chrome 中为我工作 - jsfiddle.net/spliter/dmZNn。您确定要在浏览器中进行测试,支持“范围”类型的输入吗?
  • 在 IE9 上工作!感谢 @spliter 的 jsfiddle。 :)
  • 只有当您点击更改元素之外的某处时才会触发更改
  • 不是真的,@ParvSharma。当表单字段值更改时会发生“更改”。您无需单击页面上的其他位置即可实现此目的。尤其是“范围”输入
  • “事件未被缓存”是什么意思。你的意思是没有被解雇???

标签: javascript jquery html events jquery-mobile


【解决方案1】:

不要使用 change 事件,使用 slidestart 或 slidestop。

更多信息:http://jquerymobile.com/test/docs/forms/slider/events.html

这是我几天前创建的一个示例:http://jsfiddle.net/Gajotres/PzTeX/

$("input#europe, input#us, input#uk, input#japan").live("slidestop", function() {

});

【讨论】:

    【解决方案2】:

    我觉得不错。也许您在加载元素之前调用了 jquery。它是否包含在 document.ready 中?您使用的是非 html5 浏览器吗?

    $(function(){
        $('input[type="range"]').change(function(){
            alert('asdasd');
        });
    });
    

    【讨论】:

    • 它是用 document.ready 包裹的,我正在使用最新的 Chrome。尝试了所有流行的浏览器(firefox、explorer、Opera 等)
    • 不,我复制了 @spliter 从 Fiddle 提供的代码,但它不起作用。
    【解决方案3】:

    'input[type="range"]' 当Emulate touch screen 在 Chrome 上为真时,不会触发 change

    【讨论】:

      猜你喜欢
      • 2018-09-21
      • 2019-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多