Live update an input value when sliding a jQuery Ui slider and set the slider value when the input is interacted with.
For this you need jQuery and jQuery UI, add in Bootstrap and a jQuery UI theme to give it a decent appearance.
The slider HTML elements:
<div class="custom-progress progress-up" style="width: 100%">
<div id="rating_slider" class="ui-slider ui-corner-all ui-slider-horizontal ui-widget ui-widget-content">
</div>
</div>The input:
<label for="rating_input">Rating</label> <input type="number" class="form-control" id="rating_input" value="50" min="0" max="100">
Initialize the slider with a minimum value of 0, a maximum value of 100 and a start value of 50. Add two events which call a function on slide and change states
$("#rating_slider").slider({
min: 0, max: 100, value: 50,
slide: function (event, ui) {//When sliding the toggle
updateInputFromSlider("#rating_input", $(this).slider("value"));
},
change: function (event, ui) {//After releasing the toggle
updateInputFromSlider("#rating_input", $(this).slider("value"));
}
});updateInputFromSlider function will set the input value to that of the slider
function updateInputFromSlider(input_id, value) {
$(input_id).val(value);
}Finally, when interacting with the input manually, update the slider value and position:
$(document).ready(function () {
$("#rating_input").change(function () {
$("#rating_slider").slider("value", $(this).val());
$("#rating_slider").prop("value", $(this).val());
});
});
