Logo
Stockholm-icons / Layout / Layout-4-blocks Created with Sketch.
Stockholm-icons / Communication / Chat6 Created with Sketch.
Stockholm-icons / General / User Created with Sketch.
Stockholm-icons / Layout / Layout-polygon Created with Figma. Stockholm-icons / Tools / Compass Created with Sketch.
Bootstrap TouchSpin is a mobile and touch friendly input spinner component for Bootstrap 3 & 4. It supports the mousewheel and the up/down keys.
For more info please visit the plugin's Demo Page or Github Repo.

Bootstrap Touchspin Examples


							<div class="card card-custom">
								<div class="card-header">
									<h3 class="card-title">Bootstrap Touchspin Examples</h3>
								</div>
								<!--begin::Form-->
								<form class="form">
									<div class="card-body">
										<div class="form-group row">
											<label class="col-form-label text-right col-lg-3 col-sm-12">Minimum Setup</label>
											<div class="col-lg-4 col-md-9 col-sm-12">
												<input id="kt_touchspin_1" type="text" class="form-control" value="55" name="demo0" placeholder="Select time"/>
											</div>
										</div>
										<div class="form-group row">
											<label class="col-form-label text-right col-lg-3 col-sm-12">With Prefix</label>
											<div class="col-lg-4 col-md-9 col-sm-12">
												<input id="kt_touchspin_2" type="text" class="form-control" value="0" name="demo0" placeholder="Select time"/>
											</div>
										</div>
										<div class="form-group row">
											<label class="col-form-label text-right col-lg-3 col-sm-12">With Postfix</label>
											<div class="col-lg-4 col-md-9 col-sm-12">
												<input id="kt_touchspin_3" type="text" class="form-control" value="0" name="demo0" placeholder="Select time"/>
											</div>
										</div>
										<div class="form-group row">
											<label class="col-form-label text-right col-lg-3 col-sm-12">Vertical Icons:</label>
											<div class="col-lg-4 col-md-9 col-sm-12">
												<input id="kt_touchspin_4" type="text" class="form-control bootstrap-touchspin-vertical-btn" value="40" name="demo0" placeholder="40"/>
											</div>
										</div>
										<div class="form-group row">
											<label class="col-form-label text-right col-lg-3 col-sm-12">Vertical Custom Icons:</label>
											<div class="col-lg-4 col-md-9 col-sm-12">
												<input id="kt_touchspin_5" type="text" class="form-control bootstrap-touchspin-vertical-btn" value="30" name="demo0" placeholder="30"/>
											</div>
										</div>
									</div>
									<div class="card-footer">
										<div class="row">
											<div class="col-lg-9 ml-lg-auto">
												<button type="reset" class="btn btn-primary mr-2">Submit</button>
												<button type="reset" class="btn btn-secondary">Cancel</button>
											</div>
										</div>
									</div>
								</form>
								<!--end::Form-->
							</div>
						

						"use strict";
						// Class definition
						var KTKBootstrapTouchspin = function() {

							// Private functions
							var demos = function() {
								// minimum setup
								$('#kt_touchspin_1, #kt_touchspin_2_1').TouchSpin({
									buttondown_class: 'btn btn-secondary',
									buttonup_class: 'btn btn-secondary',

									min: 0,
									max: 100,
									step: 0.1,
									decimals: 2,
									boostat: 5,
									maxboostedstep: 10,
								});

								// with prefix
								$('#kt_touchspin_2, #kt_touchspin_2_2').TouchSpin({
									buttondown_class: 'btn btn-secondary',
									buttonup_class: 'btn btn-secondary',

									min: -1000000000,
									max: 1000000000,
									stepinterval: 50,
									maxboostedstep: 10000000,
									prefix: '$'
								});

								// vertical button alignment:
								$('#kt_touchspin_3, #kt_touchspin_2_3').TouchSpin({
									buttondown_class: 'btn btn-secondary',
									buttonup_class: 'btn btn-secondary',

									min: -1000000000,
									max: 1000000000,
									stepinterval: 50,
									maxboostedstep: 10000000,
									postfix: '$'
								});

								// vertical buttons with custom icons:
								$('#kt_touchspin_4, #kt_touchspin_2_4').TouchSpin({
									buttondown_class: 'btn btn-secondary',
									buttonup_class: 'btn btn-secondary',
									verticalbuttons: true,
									verticalup: '<i class="ki ki-plus"></i>',
									verticaldown: '<i class="ki ki-minus"></i>'
								});

								// vertical buttons with custom icons:
								$('#kt_touchspin_5, #kt_touchspin_2_5').TouchSpin({
									buttondown_class: 'btn btn-secondary',
									buttonup_class: 'btn btn-secondary',
									verticalbuttons: true,
									verticalup: '<i class="ki ki-arrow-up"></i>',
									verticaldown: '<i class="ki ki-arrow-down"></i>'
								});
							}

							return {
								// public functions
								init: function() {
									demos();
								}
							};
						}();

						jQuery(document).ready(function() {
							KTKBootstrapTouchspin.init();
						});
						

Validation State Examples


							<div class="card card-custom">
								<div class="card-header">
									<h3 class="card-title">Validation State Examples</h3>
								</div>
								<!--begin::Form-->
								<form class="form">
									<div class="card-body">
										<div class="form-group row">
											<label class="col-form-label text-right col-lg-3 col-sm-12">Success State</label>
											<div class="col-lg-4 col-md-9 col-sm-12 validate">
												<input id="kt_touchspin_1_validate" type="text" class="form-control is-valid" value="40" name="demo0" placeholder="40"/>
												<div class="valid-feedback">Success! You've done it.</div>
												<span class="form-text text-muted">Example help text that remains unchanged.</span>
											</div>
										</div>
										<div class="form-group row">
											<label class="col-form-label text-right col-lg-3 col-sm-12">Error State</label>
											<div class="col-lg-4 col-md-9 col-sm-12 validate">
												<input id="kt_touchspin_2_validate" type="text" class="form-control is-invalid" value="40" name="demo2" placeholder="40"/>
												<div class="invalid-feedback">Sorry, that username's taken. Try another?</div>
												<span class="form-text text-muted">Example help text that remains unchanged.</span>
											</div>
										</div>
									</div>
									<div class="card-footer">
										<div class="row">
											<div class="col-lg-9 ml-lg-auto">
												<button type="reset" class="btn btn-primary mr-2">Submit</button>
												<button type="reset" class="btn btn-secondary">Cancel</button>
											</div>
										</div>
									</div>
								</form>
								<!--end::Form-->
							</div>
						

						"use strict";
						// Class definition
						var KTKBootstrapTouchspin = function() {

							// Private functions
							var validationStateDemos = function() {
								// validation state demos
								$('#kt_touchspin_1_validate').TouchSpin({
									buttondown_class: 'btn btn-secondary',
									buttonup_class: 'btn btn-secondary',

									min: -1000000000,
									max: 1000000000,
									stepinterval: 50,
									maxboostedstep: 10000000,
									prefix: '$'
								});

								// vertical buttons with custom icons:
								$('#kt_touchspin_2_validate').TouchSpin({
									buttondown_class: 'btn btn-secondary',
									buttonup_class: 'btn btn-secondary',

									min: 0,
									max: 100,
									step: 0.1,
									decimals: 2,
									boostat: 5,
									maxboostedstep: 10,
								});

								$('#kt_touchspin_3_validate').TouchSpin({
									buttondown_class: 'btn btn-secondary',
									buttonup_class: 'btn btn-secondary',
									verticalbuttons: true,
									verticalupclass: 'ki ki-plus',
									verticaldownclass: 'ki ki-minus'
								});
							}

							return {
								// public functions
								init: function() {
									validationStateDemos();
								}
							};
						}();

						jQuery(document).ready(function() {
							KTKBootstrapTouchspin.init();
						});

						
Success! You've done it.
Example help text that remains unchanged.
Sorry, that username's taken. Try another?
Example help text that remains unchanged.

User Profile 15 messages

Recent Notifications
Stockholm-icons / Layout / Layout-polygon Created with Figma. Stockholm-icons / Files / File-done Created with Sketch.

Important Notice

Lorem Ipsum is simply dummy text of the printing and industry.

Stockholm-icons / Layout / Layout-polygon Created with Figma. Stockholm-icons / Design / Pen&ruller Created with Sketch.

System Update

There are many variations of passages of Lorem Ipsum available.

Stockholm-icons / Layout / Layout-polygon Created with Figma. Stockholm-icons / General / Thunder-move Created with Sketch.

Server Maintenance

Contrary to popular belief, Lorem Ipsum is not simply random text.

Stockholm-icons / Layout / Layout-polygon Created with Figma. Stockholm-icons / Home / Alarm-clock Created with Sketch.

DB Migration

If you are going to use a passage of Lorem Ipsum, you need.

System Messages
Stockholm-icons / Communication / Group-chat Created with Sketch.
09:30 AM

To start a blog, think of a topic about and first brainstorm ways to write details

Stockholm-icons / General / Attachment2 Created with Sketch.
2:45 PM

To start a blog, think of a topic about and first brainstorm ways to write details

Stockholm-icons / Home / Library Created with Sketch.
3:12 PM

To start a blog, think of a topic about and first brainstorm ways to write details

Stockholm-icons / Communication / Add-user Created with Sketch.
7:05 PM

To start a blog, think of a topic about and first brainstorm ways to write details

Privacy Settings:

After you log in, you will be asked for additional information to confirm your identity.

Security Settings:

After you log in, you will be asked for additional information to confirm your identity. For extra security, this requires you to confirm your email. Learn more.

Stockholm-icons / Navigation / Up-2 Created with Sketch.

Select A Demo

Demo 1
Demo 2
Demo 3
Demo 4
Demo 5
Demo 6
Demo 7
Demo 8
Demo 9