简体   繁体   English

输入,手动设置值时不会触发onchange事件

[英]input, onchange event dont fire when value is set manually

I want to catch the event on the range slider even if i press a button and change the Value by: 我想在范围滑块上捕获事件,即使我按下按钮并通过以下方式更改“值”:

$("input").val(1);

http://jsfiddle.net/BaEar/188/ http://jsfiddle.net/BaEar/188/

But the event "input" dont fire by button press. 但是事件“输入”不会通过按钮按下来触发。 And "change" is also not working. 而且“更改”也不起作用。

HTML: HTML:

<input type="range">
<button>Change</button>
<div id="output"></div>

Javascript: 使用Javascript:

$("input").on("input", function() { //Does not fire on button click :(
    $("#output").text($(this).val());
});

$("button").click(function() {
   $("input").val(1); 
});

Anyone with a solution ? 任何人有解决方案吗? Thanks :) 谢谢 :)

First, change the on handler to use change like 首先,将on处理程序change为使用类似

$("input").on("change", function() { 
    $("#output").text($(this).val());
});

Second, manually trigger it in the click handler like 其次,在点击处理程序中手动触发它,例如

$("button").click(function() {
   $("input").val(1); 
    $("input").trigger("change");
});

fiddle 小提琴

I think $("input").val(1) should be changed to $("input").val(1).trigger('input'); 我认为$("input").val(1)应该更改为$("input").val(1).trigger('input'); . You are listening for input event so after changing the value that event should be fired. 您正在监听input事件,因此在更改值后应触发该事件。

jsfiddle -> http://jsfiddle.net/BaEar/191/ jsfiddle-> http://jsfiddle.net/BaEar/191/

Try this: 尝试这个:

$("input").on("input change", function() {
    $("#output").text($(this).val());
});

$("button").click(function() {
   $("input").val(1);
   $("input").change();
});

http://jsfiddle.net/BaEar/192/ http://jsfiddle.net/BaEar/192/

So the range slider is normally updating by changing the value. 因此,范围滑块通常是通过更改值来更新的。 AmmarCSE solution only triggers, if a value is set. 如果设置了值,则仅触发AmmarCSE解决方案。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM