Reputation: 363
i have a number picker with a function which works perfectly. But whenever i want to have 3 number pickers which use the same function, they all function together (i mean when i press up, all three is rising the numbers). How can i make all three number pickers function independently from each other with using just one function ?
(this example is for one number picker. The function is working but i need 2 more number pickers to use this function but work independently from each other)
var tableSpinnerRow = $('<div class="row"/>').appendTo(tabPage);
var spinnerContainer = $('<div class=" container col-xs-12 "/>').appendTo(tableSpinnerRow);
$('<div class="col-xs-2"><b>Columns: from</b></div>').appendTo(spinnerContainer);
var a = $('<div class="col-xs-2"/>').appendTo(spinnerContainer);
var spinner1 = $('<div class=" input-group spinner"/>').appendTo(a);
var input1 = $('<input type="text" class="form-control " value="1"/>').appendTo(spinner1);
var input_Group1 = $('<div class="input-group-btn-vertical"/>').appendTo(spinner1);
var buttonPlus1 = $('<button class="btn btn-default"><i class="fa fa-caret-up"></i></button>').appendTo(input_Group1);
var buttonMinus1 = $('<button class="btn btn-default"><i class="fa fa-caret-down"></i></button>').appendTo(input_Group1);
(function ($) {
$('.spinner .btn:first-of-type').on('click', function() {
$('.spinner input').val( parseInt($('.spinner input').val(), 10) + 1);
});
$('.spinner .btn:last-of-type').on('click', function() {
$('.spinner input').val( parseInt($('.spinner input').val(), 10) - 1);
});
})(jQuery);
Upvotes: 0
Views: 405
Reputation:
Changing your code to this worked fine for me
var tableSpinnerRow = $('<div class="row">').appendTo(tabPage);
var spinnerContainer = $('<div class=" container col-xs-12 ">').appendTo(tableSpinnerRow);
$('<div class="col-xs-2"><b>Columns: from</b></div>').appendTo(spinnerContainer);
var a = $('<div class="col-xs-2">').appendTo(spinnerContainer);
var spinner1 = $('<div class=" input-group spinner">').appendTo(a);
var input1 = $('<input type="text" class="form-control " value="1"/>').appendTo(spinner1);
var input_Group1 = $('<div class="input-group-btn-vertical">').appendTo(spinner1);
var buttonPlus1 = $('<button class="plus btn btn-default"><i class="fa fa-caret-up"></i></button>').appendTo(input_Group1);
var buttonMinus1 = $('<button class="minus btn btn-default"><i class="fa fa-caret-down"></i></button>').appendTo(input_Group1);
$('.minus, .plus').on('click', function() {
var self = $(this);
var input = self.parents(".input-group:first").find(".form-control");
input.val(parseInt(input.val()) + (self.hasClass("plus") ? 1 : -1));
});
Upvotes: 1
Reputation: 5331
You could copy the function using .concat() so that you have multiple instances
Upvotes: 0