30

嘿,jquery 和 hmtl5 范围有点麻烦。我试图在它们发生变化时获取值,但事件侦听器没有捕获它。目前我的代码是:

HTML

html += '<li>Apply Credits: <input type="range"  min="0" max="'+credits+'" name="discount_credits" id="discount_credits" /> <span>'+credits+'</span></li>'

JS是:

$('#discount_credits').mousewheel( function() { 
        alert('it changed!'); 
        alert('new value = ' + $(this).val()); 
    });

我也试过

$('#discount_credits').change( function() { 
            alert('it changed!'); 
            alert('new value = ' + $(this).val()); 
        });

两者似乎都不起作用。难道我做错了什么?

4

5 回答 5

41
$('input[type=range]').on('input', function () {
    $(this).trigger('change');
});

这会change在每个事件上触发input事件。

于 2015-03-13T18:32:28.893 回答
18

在 HTML5 上<input type="range">使用change.

见:http: //jsfiddle.net/DerekL/BaEar/33/

于 2012-05-06T20:01:32.117 回答
6

我假设您的 span 有一个 id:<span id="slidernumber">...</span> 我们还假设您有几个滑块,并且如果其中任何一个被移动,您希望看到文本更改:

<li>
Apply Credits1: 
<input type="range" min="0" max="100" 
name="discount_credits1" id="discount_credits" 
/>
</li>

<li>
Apply Credits2: 
<input type="range" min="0" max="100" 
name="discount_credits2" id="discount_credits" 
/>
</li>

<span id="slidernumber">50</span>

尝试这个:

$(document).ready(function(){
  $("[type=range]").change(function(){
    var newval=$(this).val();
    $("#slidernumber").text(newval);
  });
});

http://jsfiddle.net/MahshidZeinaly/CgQ5c/

现在让我们假设您有几个滑块,但是如果其中一个特定的被移动了,您希望看到文本的变化。(我假设它是因为范围输入在 li 标签内,并且您给了它一个名称):

<li>
Apply Credits1: 
<input type="range" min="0" max="100" 
name="discount_credits1" id="discount_credits" 
/>
<span id="slidernumber">50</span>
</li>

<li>
Apply Credits2: 
<input type="range" min="0" max="100" 
name="discount_credits2" id="discount_credits" 
/>
<span id="slidernumber">50</span>
</li>

尝试这个:

$(document).ready(function(){
  $("[type=range]").change(function(){
    var newv=$(this).val();
    $(this).next().text(newv);
  });
});

http://jsfiddle.net/MahshidZeinaly/2pe7P/1/

于 2013-11-18T04:14:21.133 回答
3

on change 事件对我来说似乎工作正常:http: //jsfiddle.net/zV3xD/7/

<input type="range"  min="0" max="100" name="discount_credits" id="discount_credits" />

<span id="newValue" value="0">0</span>

$('#discount_credits').change( function() {
    var newValue = this.value;        
    $('#newValue').html(newValue);
});​

或者你可以尝试这样的事情

<form oninput="result.value=parseInt(a.value)">
    <input type="range" name="a" value="50" /> =
    <output name="result">0</output>
</form>

使用output此处的示例:https ://developer.mozilla.org/en-US/docs/Web/HTML/Element/output

于 2012-05-06T19:55:07.583 回答
-1

几个测试和错误修复!

$('input[name=form_range]').change('mousestop',function () {

});
于 2018-12-04T20:17:26.347 回答