I have a modified Jquery UI Slider Bar (-100 to +100). When the user moves the slider up and down the scale they receive visual feedback via a <div id="slider-result"></div>
Currently the slider-result displays the - symbol when the number is negative e.g. -47, but it does not display the + symbol when the number is positive e.g. 61
How can I make slider-result display the + symbol immediately before the number when it is positive?
I have looked at this question but when I try to integrate the solution it displays the + when the number is positive, but it stops displaying the number...
My Attempt
slide: function(event, ui) {
$("#slider-result").html(ui.value>0?'+':'') + ui.value;
Any helps is as always, much appriciated. Thanks
Edit - My complete code
$('#submit').click(function() {
var username = $('#hidden').val();
if (username == "") username = 0; //SHOULD THIS STILL BE 0?
$.post('comment.php', {
hidden: username
}, function(return_data) {
alert(return_data);
});
});
$(".slider").slider({
animate: true,
range: "min",
value: 0,
min: -100,
max: +100,
step: 1,
slide: function(event, ui) {
$("#slider-result").html(ui.value>0?'+':'') + ui.value;
//this updates the hidden form field so I can submit the data using a form
if($(this).attr("id") == "one")
$("#hidden1").val(ui.value);
}
});
You would have to include the + ui.value; inside of the parentheses as well:
$("#slider-result").html((ui.value>0?'+':'') + ui.value);
Since you only have the '+' or '' inside of the html() method, it will only put those values and not include the actual value.
You just need to put the ui.value inside the html function:
$("#slider-result").html(ui.value>0?'+' + ui.value:'' + ui.value);
jsFiddle example
Related
I need to use a Jquery UI Slider with Inches.
I know how to get the slider to work with standard numbers eg: 0 to 100 but I'm not sure how to get inches to work.
I assume an extra calculation is needed - maybe.
Any advice on how to get this one working?
Here's something that should get you started:
function toFeet(n) {
return Math.floor(n / 12) + "'" + (n % 12) + '"';
}
$(function () {
$("#slider").slider({
min: 55,
max: 85,
values: [60, 80],
range: true,
slide: function(event, ui) {
// ui.values[0] and ui.values[1] are the slider handle values.
$("#result .min").html(toFeet(ui.values[0]));
$("#result .max").html(toFeet(ui.values[1]));
}
});
});
All you need to do is translate your slider minimum and maximum values into inches. When sliding the slider, you can display feet and inches by doing a simple conversion (implemented here in the toFeet method).
Example: http://jsfiddle.net/andrewwhitaker/4extL/57/
I'm using jquery UI's slider and i want to return the results from multiple sliders so I can performs a calculation.
this is what i have so far but I'm struggling to get any results from out side the function.
$(function() {
var x
$("#slider4").slider({
value: 1,
min: 0,
max: 50,
step: 5,
slide: function(event, ui) {
$("#items").val("$" + ui.value);
x =$("#items").val("$" + ui.value);
}
});
$("#items").val("$" + $("#slider4").slider("value"));
console.log(x) // this doesnt update the console with the slider value
});
Ideally outside the function i would want to add multiple slider results similar to below.
var z = x * y;
To get the value of the slider outside of the slide handler you can either retrieve the value of #items (as you update that within the slide handler):
var sliderValue = $('#items').val();
Or you can read the value from the slider() directly:
var sliderValue = $('#slier4').slider('option', 'value');
Also, note that you do not need to append empty strings when setting val():
$("#slider4").slider({
value: 1,
min: 0,
max: 50,
step: 5,
slide: function(event, ui) {
$("#items").val(ui.value);
}
});
The value does not magically keep updating the textbox, you need to write code that updates the value when the slider value changes. So add a change event
change: function( event, ui ) { $("#items").val(ui.value); }
This is the code for my jquery ui slider:
var slidervalue = 100;
$(function () {
$( "#slider" ).slider({
range: "min",
value: 100,
min: 1,
max: 700,
slide: function( event, ui ) {
$( "#amount" ).val(ui.value );
slidervalue = ui.value;
}
});
$( "#amount" ).val( $( "#slider" ).slider( "value" ) );
});
And this is a extra the function i have created to fetch a number from my deal title and calculate savings and display the result.
function updateSlider() {
$.each($('.coupontitle'),function(index,coupObj){
if ($(coupObj).text().match(/(\d+)\%/i))
{
var percent = $(coupObj).text().match(/(\d+)\%/i);
var savings = ((percent[1]*.01) * slidervalue).toFixed(0);
$('span',coupObj).html('Save: $'+savings);
}
else if ($(coupObj).text().match(/\$(\d+)/i))
{
var percent = $(coupObj).text().match(/\$(\d+)/i);
var savings = ((percent[1]*.01) * 100).toFixed(0);
$('span',coupObj).html('Save: $'+savings);
}
});
}
this code is working properly along with the slider. right now, when a user slides the slider the amount corresponding to the slider is passed using ui.value and is passed to the above function and is calculated.
But, when i input a value into the text box manually, i want the slider to move automatically, and i want that value to pass into the function to calculate. Right now, when a amount is entered manually, the input value is not passed into the function.
I want the slider to work as this site: http://www.chippmunk.com/
I came across this jsfiddle, which does the work, but when manually entered it is not passing the text box value into my function to carry on with the calculation.
jsfiddle - http://jsfiddle.net/andrewwhitaker/MD3mX/
The accepted answer above is very useful and it works fine for single value sliders. But someone like me might wonder how to control two values in Range Slider.
So, if we use range slider, we need to pass an array as values and for range slider we can handle it like this
var min_val = 0;
var max_val = 1000;
function minMaxControl(type) {
if (type == 'min') {
min_val = $('#min').val();
} else if (type == 'max') {
max_val = $('#max').val();
}
$("#slider-range").slider('values', [min_val, max_val]);
}
$("#slider-range").slider({
range: true,
min: 0,
max: 1000,
values: [min_val, max_val],
slide: function(event, ui) {
$("#min").val(ui.values[0]);
$("#max").val(ui.values[1]);
}
});
You can see the full code and demo here. https://jsfiddle.net/N4K1B/2tv9phke/1/
So basically in above answer the single parameter of the slider was controlled like this:
$("#slider").slider("value",this.value);
And for range slider instead of passing a single value we are passing an array of two values like this:
$("#slider-range").slider('values', [min_val, max_val]);
Hope this answer may help someone if someone is still using jquery-ui slider.
For more, please refer to the documentation
This will work, I would move the $-sign out of the input though.
http://jsfiddle.net/Rusln/MD3mX/847/
$("#slider").slider({
range: "min",
value: 1,
step: 1000,
min: 0,
max: 5000000,
slide: function (event, ui) {
$("input").val(ui.value);
}
});
$("input").change(function () {
$("#slider").slider("value",this.value);
});
UPDATE
http://jsfiddle.net/Rusln/KLj6Z/
$("#slider").slider({
range: "min",
value: 1,
step: 1,
min: 0,
max: 100,
slide: function (event, ui) {
$("input").val(ui.value);
}
});
$("input").on("keyup",function(e){
$("#slider").slider("value",this.value);
});
I have this demo.
The value only updates if I refresh the page, but my idea is to update the value when the pointer is moved.
I use this plugin but I think that is based on the jQuery UI slider.
In my code I have:
<script type="text/javascript">
$(function(){
$("#SliderSingle").slider({
from: 400,
to: 2000,
step: 2.5,
round: 1,
scale: ['400€', '600€', '800€', '1000€', '1200€', '1400€',
'1600€', '1800€', '2000€'],
dimension: ' €',
skin: "round",
slide: function(event, ui){
$("#amount").val('$' + ui.value);
}
});
$("#amount").val('$' + $("#SliderSingle").slider("value"));
});
</script>
The only issue is just update the value when pointer is moved.
I don't think this is built on the jQueryUI slider. However, you should be able to use the callback option, which accepts a value parameter:
$("#SliderSingle").slider({
/* Snip */
callback: function(value) {
$("#amount").val("$" + value);
}
/* Snip */
});
Working example: http://jsfiddle.net/HKhBH/
I am trying to display the value of the slider inside the drag handle (slider). Any resouce provided is much appreciated. I am using jQuery 1.5.1
Thanks
Are you using jQuery UI Slider ?
If so, this is a solution :
$("#slider").slider({
change: function() {
var value = $("#slider").slider("option","value");
$("#slider").find(".ui-slider-handle").text(value);
},
slide: function() {
var value = $("#slider").slider("option","value");
$("#slider").find(".ui-slider-handle").text(value);
}
});
jsFiddle example here
Just wanted to add a little to the answer.
If you are setting an initial value, or you would like the text to appear on the handle before the slide method is called you will need to add the document ready bit at the bottom, but i have also condensed the code a little
// take value from event, ui.value
$("#slider1").slider({
slide: function (event, ui) {
$("#slider").find(".ui-slider-handle").text(ui.value);
}
});
// sets text initially to value of slider, even if a default value is set
$(document).ready(function() {
var value = $("#slider").slider("option","value");
$("#slider").find(".ui-slider-handle").text(value);
});
Thx all, I have solution for jQuery ui slider with value on drag different handles.
Example for 2 handles:
$("#wt-altitude-range").slider({
range: true,
min: 0,
max: 3000,
values: [ 100, 2500 ],
slide: function(event, ui) {
$(ui.handle).text(ui.value);
}
});
Work for slide event.
ui.handle - current handle, ui.value - current value.