stepper
by mkdizajn
HTML
<script src="//code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/smoothness/jquery-ui.css">
<select name='weight' id='weightpicker' class='hide-cat-input select-step' >
<option value=''>Choose Weight</option>
<option value='5'>5 lbs or less</option><option value='5.0625'>5 lbs, 1 oz.</option><option value='5.125'>5 lbs, 2 oz.</option><option value='5.1875'>5 lbs, 3 oz.</option><option value='5.25'>5 lbs, 4 oz.</option><option value='5.3125'>5 lbs, 5 oz.</option><option value='5.375'>5 lbs, 6 oz.</option><option value='5.4375'>5 lbs, 7 oz.</option><option value='5.5'>5 lbs, 8 oz.</option><option value='5.5625'>5 lbs, 9 oz.</option><option value='5.625'>5 lbs, 10 oz.</option><option value='5.6875'>5 lbs, 11 oz.</option><option value='5.75'>5 lbs, 12 oz.</option><option value='5.8125'>5 lbs, 13 oz.</option><option value='5.875'>5 lbs, 14 oz.</option><option value='5.9375'>5 lbs, 15 oz.</option><option value='6'>6 lbs, 0 oz.</option><option value='6.0625'>6 lbs, 1 oz.</option><option value='6.125'>6 lbs, 2 oz.</option><option value='6.1875'>6 lbs, 3 oz.</option><option value='6.25'>6 lbs, 4 oz.</option><option value='6.3125'>6 lbs, 5 oz.</option><option value='6.375'>6 lbs, 6 oz.</option><option value='6.4375'>6 lbs, 7 oz.</option><option value='6.5'>6 lbs, 8 oz.</option><option value='6.5625'>6 lbs, 9 oz.</option><option value='6.625'>6 lbs, 10 oz.</option><option value='6.6875'>6 lbs, 11 oz.</option><option value='6.75'>6 lbs, 12 oz.</option><option value='6.8125'>6 lbs, 13 oz.</option><option value='6.875'>6 lbs, 14 oz.</option><option value='6.9375'>6 lbs, 15 oz.</option><option value='7'>7 lbs, 0 oz.</option><option value='7.0625'>7 lbs, 1 oz.</option><option value='7.125'>7 lbs, 2 oz.</option><option value='7.1875'>7 lbs, 3 oz.</option><option value='7.25'>7 lbs, 4 oz.</option><option value='7.3125'>7 lbs,...
CSS
/* Do not change */
.select-step {
width: 0.1px;
height: 0.1px;
opacity: 0;
overflow: hidden;
position: absolute;
z-index: -1;
-webkit-appearance: none;
}
/* You can change from here */
.jquery-select-step {
display: inline-block;
}
.jquery-select-step-element {
position: relative;
display: inline-block;
padding: 5px 45px;
font-size: 13px;
font-weight: bold;
line-height: 20px;
color: #333;
white-space: nowrap;
vertical-align: middle;
user-select: none;
background-color: #fff;
border: 1px solid #d5d5d5;
border-radius: 3px;
}
.jquery-select-step-element > div {
display: inline-block;
}
.decrementStep, .incrementStep {
position: absolute;
width: 30px;
left: 0;
top: 0;
padding: 5px;
text-align: center;
border-right: 1px solid #d5d5d5;
background-image: -webkit-linear-gradient(#fcfcfc, #eee);
background-image: linear-gradient(#fcfcfc, #eee);
cursor: pointer;
}
.incrementStep {
left: auto;
right: 0;
border-right: 0;
border-left: 1px solid #d5d5d5;
}
JavaScript
++$(function() {
$(".select-step").selectStep({
onChange: function(value) {
console.log(value, "value");
}
});
})
(function ($) {
$.fn.selectStep = function (vars) {
/*
* Function to get all plugin's variables
* and element options on array
*/
function getData(element, callback) {
// Define default variables
var defaultVars = {
onChange: null,
incrementLabel: "+",
decrementLabel: "-"
};
var assign = Object.assign;
// Get all plugin variables
vars = assign({}, defaultVars, vars);
var options = [];
// Get select options
var optElement = $(element).find("option");
optElement.each(function (i, o) {
var name = $(this).text();
var value = $(this).attr("value");
var selected = $(this).is(':selected');
options = options.concat([{ name: name, value: value, selected: selected }]);
if (i === optElement.length - 1) {
// Fire callback with select options and variables
callback(vars, options);
}
});
}
/*
* Function to create fake element
* to mock the select elements
*/
function addFakeElements(element, callback) {
getData(element, function (vars, options) {
// Check if options is empty
if (!options.length) {
return;
}
// Add class to select element
jQuery(element).addClass("select-step");
// Add fake elements
var incrementLabel = vars.incrementLabel, decrementLabel = vars.decrementLabel;
// Find selected option on the select element
var isSelected = [];
...