2015-05-17 3 views
1

Я хочу, чтобы поймать событие на ползунок диапазона, даже если я нажимаю кнопку и изменить значение по:вход, OnChange событие DonT огонь, когда значение устанавливается вручную

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

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

Но событие «ввод» не запускается нажатием кнопки. И «изменение» также не работает.

HTML:

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

Javascript:

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

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

Любой человек с решением? Спасибо :)

+1

Программное изменение значения не приводит к возникновению нативных событий, поскольку в некоторых случаях это было бы серьезным неудобством. Вы должны запускать обработчик событий самостоятельно при изменении значения, как в '$ (" input "). Val (1) .trigger ('input');' – adeneo

ответ

2

Во-первых, изменить on обработчик использовать change как

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

Во-вторых, вручную запустить его в обработчик щелчка, как

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

fiddle

+0

Спасибо. thats некоторое обходное решение. И это работает. Почему событие не запускается? даже gui меняется ... странно – Cracker0dks

+0

@ Cracker0dks, как сказал adeneo, когда вы программно меняете ввод, вам нужно запускать связанные события вручную – AmmarCSE

1

Я думаю $("input").val(1) должен следует изменить на $("input").val(1).trigger('input');. Вы слушаете событие input, поэтому после изменения значения, которое должно быть уволено событие.

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

+0

Ничего, я понятия не имел, что событие «ввода» даже существовало :) – AmmarCSE

1

Попробуйте это:

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

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

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

Так регулятор диапазона, как правило, обновление путем изменения значения. Решение AmmarCSE запускает только при установленном значении.

Смежные вопросы