Form components you’ll need for building great looking mobile and desktop apps. Shipping 14 distinct elements ranging from inputs to layout helpers.

With useful features for a refined UX, including the following elements:

  • Single and multiline text
  • Select styling
  • Buttons
  • Segmented control
  • Checkbox and checklist
  • Radio buttons
  • Switch
  • Stepper
  • Page & typography
  • Slider
  • Progress
  • Alerts
  • Notifications
  • Notes


Interested in date and/or time selection? Other demos that could be useful:

Date & Time Range Event Calendar


Calendar demos available for other frameworks.

Viewing demos & code for

Forms - Text Fields

Choose demo
// Use the settings object to change the theme
mobiscroll.settings = {
    lang: '',
    theme: ''
};
<div id="demo" style="display:none" mbsc-form>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Single-line text</div>

        <div>
            <label for="name">Label</label>
            <input id="name" type="text" placeholder="Text field label" />
        </div>

        <label>
            Password
            <input type="password" placeholder="Text field with icon" data-icon="lock2" />
        </label>

        <label>
            Password Toggle
            <input type="password" placeholder="Text field with icon" data-icon="lock2" data-password-toggle="true" />
        </label>

        <label>
            <input type="text" placeholder="Text field with right icon" data-icon="pencil" data-icon-align="right" />
        </label>

        <label>
            <input type="text" placeholder="Text field disabled" disabled/>
        </label>

        <label class="mbsc-err">
            <input type="text" placeholder="Text field with error style"  />
        </label>

        <label class="mbsc-err">
            <input type="text" placeholder="Text field with error style and message"  />
            <span class="mbsc-err-msg">Error message!</span>
        </label>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Multi-line text</div>

        <label>
            Label
            <textarea></textarea>
        </label>

        <label>
            <textarea data-icon="pencil" data-icon-align="right"></textarea>
        </label>

        <label>
            Label
            <textarea data-icon="bubble" data-icon-align="left"></textarea>
        </label>

        <label>
            <textarea placeholder="disabled" disabled></textarea>
        </label>

        <label class="mbsc-err">
            <textarea></textarea>
            <span class="mbsc-err-msg">Error message!</span>
        </label>
    </div>
</div>

Forms - Select

Choose demo
// Use the settings object to change the theme
mobiscroll.settings = {
    lang: '',
    theme: ''
};
<div id="demo" style="display:none" mbsc-form>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Select</div>

        <label>
            Label
            <select>
                <option>Select</option>
                <option value="volvo">Volvo</option>
                <option value="saab">Saab</option>
                <option value="mercedes">Mercedes</option>
                <option value="audi">Audi</option>
            </select>
        </label>
        <label>
            <select data-icon="plus" data-icon-align="right">
                <option>Select with right icon</option>
                <option value="opel">Opel</option>
                <option value="renault">Renault</option>
                <option value="Citroen">Citroen</option>
                <option value="Lotus">Lotus</option>
            </select>
        </label>
        <label>
            <select data-icon="plus" data-icon-align="left">
                <option>Select with left icon</option>
                <option value="Peugeot">Peugeot</option>
                <option value="Porsche">Porsche</option>
                <option value="Fiat">Fiat</option>
                <option value="Volkswagen">Volkswagen</option>
            </select>
        </label>
        <label class="mbsc-err">
            <select>
                <option>Select error</option>
                <option value="Ferrari">Ferrari</option>
                <option value="Honda">Honda</option>
                <option value="Suzuki">Suzuki</option>
                <option value="Lamborghini">Lamborghini</option>
            </select>
        </label>
        <label>
            <select disabled>
                <option>Select disabled</option>
                <option value="Bentley">Bentley</option>
                <option value="Morgan">Morgan</option>
                <option value="Chevrolet">Chevrolet</option>
                <option value="Dodge">Dodge</option>
            </select>
        </label>
    </div>
</div>

Forms - Checkbox

Choose demo
// Use the settings object to change the theme
mobiscroll.settings = {
    theme: '',
    lang: '',
    display: ''
};
<div id="demo" style="display:none" mbsc-form>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Checkbox</div>

        <label>
            <input type="checkbox" checked>
            Option 1
            <span class="mbsc-desc">Checked checkbox</span>
        </label>
        <label>
            <input type="checkbox">
            Option 2
            <span class="mbsc-desc">Empty checkbox</span>
        </label>
        <label>
            <input type="checkbox" disabled> 
            Option 3
            <span class="mbsc-desc">Disabled checkbox</span>
        </label>
        <label>
            <input type="checkbox" checked disabled>
            Option 4
            <span class="mbsc-desc">Disabled and checked checkbox</span>
        </label>
    </div>
</div>

Forms - Switch

Choose demo
// Use the settings object to change the theme
mobiscroll.settings = {
    theme: '',
    lang: '',
    display: ''
};
<div id="demo" style="display:none" mbsc-form>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Switch</div>

        <label>
            <input data-role="switch" type="checkbox"> Switch Off
            <span class="mbsc-desc">This is description for Switch</span>
        </label>

        <label>
            <input data-role="switch" type="checkbox" checked> Switch On
            <span class="mbsc-desc">This is description for Switch 2</span>
        </label>
        <label>
            <input data-role="switch" type="checkbox" disabled> Disabled Switch Off
        </label>
        <label>
            <input data-role="switch" type="checkbox" disabled checked> Disabled Switch On
        </label>
    </div>
</div>

Forms - Radio buttons

Choose demo
// Use the settings object to change the theme
mobiscroll.settings = {
    lang: '',
    theme: ''
};
<div id="demo" style="display:none" mbsc-form>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Radio buttons</div>

        <label>
            <input type="radio" name="group" checked> Radio Option 1
            <span class="mbsc-desc">This is description for radio 1</span>
        </label>
        <label>
            <input type="radio" name="group"> Radio Option 2
            <span class="mbsc-desc">This is description for radio 2</span>
        </label>
        <label>
            <input type="radio" name="group"> Radio Option 3
        </label>
        <label>
            <input type="radio" name="group" disabled> Disabled
        </label>
    </div>
</div>

Forms - Buttons

Choose demo
// Use the settings object to change the theme
mobiscroll.settings = {
    lang: '',
    theme: ''
};
<div id="demo" style="display:none" mbsc-form>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Buttons</div>
        <div class="mbsc-btn-group">
            <button>Button</button>
            <button disabled>Disabled</button>
        </div>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Full width buttons</div>
        <div class="mbsc-btn-group-block">
            <button>Full width button</button>
            <button disabled>Disabled full width</button>
        </div>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Justified buttons</div>
        <div class="mbsc-btn-group-justified">
            <button>Tag</button>
            <button>Favorite</button>
            <button>Flag</button>
        </div>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Icons</div>
        <div class="mbsc-btn-group">
            <button data-icon="tag"></button>
            <button data-icon="heart"></button>
            <button data-icon="flag" disabled></button>
        </div>
        <div class="mbsc-btn-group">
            <button data-icon="tag">Tag</button>
            <button data-icon="heart">Favorite</button>
            <button data-icon="flag" disabled>Flag</button>
        </div>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Flat buttons</div>
        <div class="mbsc-btn-group">
            <button class="mbsc-btn-flat">Flat</button>
            <button class="mbsc-btn-flat" data-icon="arrow-left5">Flat & Icon</button>
            <button class="mbsc-btn-flat" data-icon="arrow-left5"></button>
            <button class="mbsc-btn-flat" data-icon="key2" disabled></button>
            <button class="mbsc-btn-flat" disabled>Flat disabled</button>
        </div>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Outline buttons</div>
        <div class="mbsc-btn-group">
            <button class="mbsc-btn-outline">Outline</button>
            <button class="mbsc-btn-outline" data-icon="arrow-left5">Outline & Icon</button>
            <button class="mbsc-btn-outline" data-icon="arrow-left5"></button>
            <button class="mbsc-btn-outline" data-icon="key2" disabled></button>
            <button class="mbsc-btn-outline" disabled>Outline disabled</button>
        </div>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Button colors</div>
        <div class="mbsc-btn-group">
            <button class="mbsc-btn-primary">Primary</button>
            <button class="mbsc-btn-secondary">Secondary</button>
            <button class="mbsc-btn-success">Success</button>
            <button class="mbsc-btn-danger">Danger</button>
            <button class="mbsc-btn-warning">Warning</button>
            <button class="mbsc-btn-info">Info</button>
            <button class="mbsc-btn-light">Light</button>
            <button class="mbsc-btn-dark">Dark</button>
        </div>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Flat button colors</div>
        <div class="mbsc-btn-group">
            <button class="mbsc-btn-flat mbsc-btn-primary">Primary</button>
            <button class="mbsc-btn-flat mbsc-btn-secondary">Secondary</button>
            <button class="mbsc-btn-flat mbsc-btn-success">Success</button>
            <button class="mbsc-btn-flat mbsc-btn-danger">Danger</button>
            <button class="mbsc-btn-flat mbsc-btn-warning">Warning</button>
            <button class="mbsc-btn-flat mbsc-btn-info">Info</button>
            <button class="mbsc-btn-flat mbsc-btn-light">Light button</button>
            <button class="mbsc-btn-flat mbsc-btn-dark">Dark</button>
        </div>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Outline button colors</div>
        <div class="mbsc-btn-group">
            <button class="mbsc-btn-outline mbsc-btn-primary">Primary</button>
            <button class="mbsc-btn-outline mbsc-btn-secondary">Secondary</button>
            <button class="mbsc-btn-outline mbsc-btn-success">Success</button>
            <button class="mbsc-btn-outline mbsc-btn-danger">Danger</button>
            <button class="mbsc-btn-outline mbsc-btn-warning">Warning</button>
            <button class="mbsc-btn-outline mbsc-btn-info">Info</button>
            <button class="mbsc-btn-outline mbsc-btn-light">Light</button>
            <button class="mbsc-btn-outline mbsc-btn-dark">Dark</button>
        </div>
    </div>
</div>

Forms - With validation

Choose demo
mobiscroll.settings = {
    lang: '',
    theme: ''
};

$(function () {
    var now = new Date();
    $('#md-birthday').mobiscroll().date({
        defaultValue: new Date(now.getFullYear() - 18, 0, 1),
        min: new Date(now.getFullYear() - 100, now.getMonth(), now.getDate()),
        max: new Date(now.getFullYear() - 13, now.getMonth(), now.getDate())
    });

    $('#md-country').mobiscroll().select({
        display: 'bottom',
        placeholder: 'Country',
        group: true,
        maxWidth: [40, 260],
        width: [40, 235]
    });

    $('#md-phone').mobiscroll().numpad({
        display: 'bottom',
        cssClass: 'md-phone-num',
        template: '{plus}ddddddddddd',
        maxLength: 14,
        allowLeadingZero: true,
        leftKey: {
            text: '+',
            value: '',
            variable: 'plus:+'
        },
        formatValue: function (numbers, vars, inst) {
            var newVal = '';

            if (vars.plus) {
                newVal += vars.plus;
            }

            newVal += numbers.join().replace(/,/g, '');

            return newVal;
        },
        parseValue: function (value) {
            if (value) {
                return value.toString().split('');
            }
            return [];
        },
        validate: function (event, inst) {
            var disabled = [],
                invalid = false;

            if (inst.isVisible()) {
                inst._markup[0].querySelector('.mbsc-np-dsp').innerHTML = inst.settings.formatValue(event.values, event.variables, inst) || '&nbsp;'
            }

            return {
                invalid: invalid,
                disabled: disabled
            };
        }
    });

    $('#md-success').mobiscroll().widget({
        display: 'modal',
        focusOnClose: false,
        buttons: [{
            text: 'Log in',
            handler: 'set'
        }],
    });

    $('#demo').on('submit', function (ev) {
        if ($(this).valid()) {
            ev.preventDefault();
            $('#md-success').mobiscroll('show');
        }
    }).validate({
        errorClass: 'mbsc-err-msg',
        errorPlacement: function (error, element) {
            element.parent().append(error);
        },
        highlight: function (element) {
            $(element).closest('.mbsc-input').addClass("mbsc-err");
        },
        unhighlight: function (element) {
            $(element).closest('.mbsc-input').removeClass("mbsc-err");
        }
    });

});
<form id="demo" style="display:none" mbsc-form>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Sign Up</div>

        <label>
            <input name="username" type="text" placeholder="Username" minlength="2" required data-icon="user4">
        </label>

        <label>
            <input name="email" type="email" placeholder="Email" required data-icon="ion-ios7-email">
        </label>

        <label>
            <input name="password" type="password" placeholder="Password" minlength="6" required data-icon="lock2" data-password-toggle="true">
        </label>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Personal data</div>

        <label>
            <input name="firstname" type="text" placeholder="First name" required data-icon="user4">
        </label>

        <label>
            <input name="lastname" type="text" placeholder="Last name" required data-icon="empty">
        </label>

        <label>
            <input name="birthday" id="md-birthday" type="text" placeholder="Birthday" required data-icon="calendar">
        </label>

        <label>
            <input name="phone" id="md-phone" type="tel" placeholder="Phone" required data-icon="phone">
        </label>

        <label>
            <select name="country" id="md-country" required data-icon="location">
                <optgroup label="A">
                    <option selected disabled></option>
                    <option value="1">Afganistan</option>
                    <option value="2">Albania</option>
                    <option value="3">Algeria</option>
                    <option value="4">Argentina</option>
                    <option value="5">Australia</option>
                    <option value="6">Austria</option>
                    <option value="7">Azerbaijan</option>
                </optgroup>
                <optgroup label="B">
                    <option value="8">Bahamas</option>
                    <option value="9">Bahrain</option>
                    <option value="10">Bolivia</option>
                    <option value="11">Brazil</option>
                    <option value="12">Bulgaria</option>
                </optgroup>
                <!-- Showing partial data. Download full source. -->
            </select>
        </label>

        <label>
            <input name="address" type="text" placeholder="Address" data-icon="empty">
        </label>

        <label>
            <input name="company" type="text" placeholder="Company" data-icon="office">
        </label>

        <label>
            <input name="title" type="text" placeholder="Title" data-icon="empty">
        </label>

        <label>
            <textarea name="about" placeholder="About me" data-icon="line-note"></textarea>
        </label>

        <label>
            <input type="text" placeholder="Website" data-icon="globe">
        </label>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Gender</div>

        <label>
            Male
            <input type="radio" name="gender" checked>
        </label>

        <label>
            Female
            <input type="radio" name="gender">
        </label>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Settings</div>

        <label>
            Send me marketing e-mail
            <input data-role="switch" name="news" value="0" type="checkbox">
        </label>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">E-mail Categories</div>

        <label>
            Baby
            <input name="cat1" type="checkbox">
        </label>
        <label>
            Beauty
            <input name="cat2" type="checkbox">
        </label>
        <label>
            Books
            <input name="cat3" type="checkbox">
        </label>
        <label>
            Clothing & Accessories
            <input name="cat4" type="checkbox">
        </label>
        <label>
            Computer & Accessories
            <input name="cat5" type="checkbox">
        </label>
        <label>
            Electronics
            <input name="cat6" type="checkbox">
        </label>
    </div>
    <div class="mbsc-form-group mbsc-btn-group-block">
        <button data-icon="checkmark" type="submit">Sign Up</button>
    </div>
</form>

<div id="md-success" style="display:none;">
    <h3>Thank you for registering</h3>
    <p>You have successfully signed up as a user!</p>
</div>

Forms - Slider

Choose demo
mobiscroll.settings = {
    lang: '',
    theme: ''
};
<div id="demo" style="display:none" mbsc-form>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Sound settings</div>
        <label>
            <input type="range" value="30" data-icon='{ "left": "volume-mute2", "right": "volume-high" }' />
        </label>
        <label>
            <input type="range" value="50" data-icon="alarm2" disabled />
        </label>
        <label>
            Weight
            <input type="range" value="130" min="80" max="300" data-val="left" data-template="{value} lbs" data-highlight="false" />
        </label>
        <label>
            Price
            <input type="range" value="100" min="0" max="500" step="25" data-tooltip="true" data-step-labels="[0, 100, 200, 300, 400, 500]">
            <input type="range" value="400" min="0" max="500" step="25" />
        </label>
        <label>
            Steps
            <input type="range" value="50" min="0" max="100" step="25" data-step-labels="[0, 25, 50, 75, 100]">
        </label>
        <label>
            Multiple
            <input type="range" value="100" min="0" max="3000" data-tooltip="true" data-step-labels="[0, 500, 1000, 1500, 2000, 2500, 3000]">
            <input type="range" value="500" min="0" max="3000" />
            <input type="range" value="2000" min="0" max="3000" />
            <input type="range" value="2800" min="0" max="3000" />
        </label>
    </div>
</div>

Forms - Stepper

Choose demo
mobiscroll.settings = {
    lang: '',
    theme: ''
};

$(function () {

    var cbAllow = $('.md-allow'),
        stepperLuggage = $('.md-luggage'),
        stepperCons = $('.md-consumption'),
        numpadCons = $('.md-numpad');

    cbAllow.change(function () {
        stepperLuggage.prop('disabled', !this.checked);
    });

    numpadCons.mobiscroll().numpad({
        preset: 'decimal',
        min: 5,
        max: 120,
        onSet: function (event, inst) {
            stepperCons.mobiscroll('setVal', event.valueText);
        }
    }).mobiscroll('setVal', stepperCons.val());

    numpadCons.mobiscroll('tap', stepperCons, function () {
        numpadCons.mobiscroll('show');
    });

    stepperCons.change(function () {
        numpadCons.mobiscroll('setVal', stepperCons.val());
    });

});
<div id="demo" style="display:none" mbsc-form>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Passengers</div>
        <div>
            <label for="md-adults">Adults</label>
            <span class="mbsc-desc">From 14 years</span>
            <input id="md-adults" type="number" data-role="stepper" min="1" value="1" max="15" />
        </div>

        <div>
            <label for="md-children">Children</label>
            <span class="mbsc-desc">2-14 years</span>
            <input id="md-children" type="number" data-role="stepper" max="15" data-val="left" />
        </div>

        <div>
            <label for="md-infant">Infant</label>
            <span class="mbsc-desc">0-2 years</span>
            <input id="md-infant" type="number" data-role="stepper" data-val="left" max="10" />
        </div>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Luggage</div>
        <label>
            Allow overweight luggage
            <input class="md-allow" type="checkbox" />
        </label>

        <div>
            <label for="md-luggage">Weight</label>
            <span class="mbsc-desc">(kg)</span>
            <input id="md-luggage" type="number" class="md-luggage" data-role="stepper" data-val="left" min="30" max="80" step="5" value="30" disabled />
        </div>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Stepper with Numpad</div>

        <div>
            <label for="md-luggage">Consumption</label>
            <div class="mbsc-desc">(mpg)</div>
            <input id="md-consumption" class="md-consumption" type="number" data-role="stepper" data-val="left" min="5" max="120" step=".5" value="30" readonly />
            <div class="md-numpad"></div>
        </div>
    </div>
</div>

Forms - Progress

Choose demo
// Use the settings object to change the theme
mobiscroll.settings = {
    lang: '',
    theme: ''
};

$(function () {

    var downloadInst = $('#download').mobiscroll('getInst'),
        interval,
        i;

    function startDownload() {
        i = 0;
        clearInterval(interval);
        interval = setInterval(function () {
            if (i == 100) {
                clearInterval(interval);
            }
            downloadInst.setVal(i += 5);
        }, 600);
    }

    $('.md-restart').click(function () {
        startDownload();
    });

    startDownload();

    var inst = $('#progress').mobiscroll('getInst'),
        val;

    $('.md-update').click(function () {
        if (inst.getVal() >= 100) {
            inst.setVal(0);
        } else {
            inst.setVal(inst.getVal() + 25);
        }
    });

    var upInterval,
        uploadList = ['1MB', '5MB', '10MB', '50MB'],
        uploadInst = $('#uploadProg').mobiscroll('getInst');

    function restartUpload() {
        uploadInst.setVal(0);
        clearInterval(upInterval);
        upInterval = setInterval(function () {
            if (uploadInst.getVal() >= 100) {
                clearInterval(upInterval);
            }
            uploadInst.setVal(uploadInst.getVal() + 17);
        }, 1000);
    }

    $('.md-upload .mbsc-progress-step-label').each(function (i, v) {
        $(v).text(uploadList[i]);
    });

    $('.md-restart-up').click(function () {
        restartUpload();
    });

    restartUpload();

    var labelList = ['Cart', 'Pay', 'Enjoy'],
        cartInst = $('#cartProg').mobiscroll('getInst');

    $('.md-demo .mbsc-progress-step-label').each(function (i, v) {
        $(v).text(labelList[i]);
    });

    $('.md-next-step').click(function () {
        if (cartInst.getVal() >= 100) {
            cartInst.setVal(0);
        } else {
            cartInst.setVal(cartInst.getVal() + 50);
        }
    });

});
<div id="demo" class="md-progress-demo" style="display:none" mbsc-form>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Downloading file</div>
        <label>
            <progress id="download" value="0" max="100" data-icon='{ "left": "cloud-download" }' data-val="right"></progress>
        </label>
    </div>
    <div class="mbsc-form-group mbsc-btn-group">
        <button class="mbsc-btn md-restart">Restart download</button>
    </div>
    <div class="mbsc-form-group">
        <label>
            <progress id="progress" value="0" max="100" data-step-labels="[0, 25, 50, 75, 100]"></progress>
        </label>
    </div>
    <div class="mbsc-form-group mbsc-btn-group">
        <button class="mbsc-btn md-update">Update progress</button>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Cloud upload</div>
        <label class="md-upload">
            <progress  value="0" id="uploadProg" max="100" data-step-labels="[0, 33, 66, 100]" data-icon='{ "left": "cloud-upload" }'></progress>
        </label>
    </div>
    <div class="mbsc-form-group mbsc-btn-group">
        <button class="mbsc-btn md-restart-up">Restart upload</button>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Checkout process</div>
        <label class="md-demo">
            <progress id="cartProg" value="0" max="100" data-step-labels="[0, 50, 100]"></progress>
        </label>
    </div>
    <div class="mbsc-form-group mbsc-btn-group">
        <button class="mbsc-btn md-next-step">Next step</button>
    </div>
</div>

Forms - Segmented

Choose demo
mobiscroll.settings = {
    lang: '',
    theme: ''
};
<div id="demo" style="display:none" mbsc-form>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Single select</div>
        <label>
            Day
            <input type="radio" value="day" data-role="segmented" name="range">
        </label>
        <label>
            Week
            <input type="radio" value="week" data-role="segmented" name="range" checked>
        </label>
        <label>
            Month
            <input type="radio" value="month" data-role="segmented" name="range">
        </label>
        <label>
            Year
            <input type="radio" value="year" data-role="segmented" name="range" checked>
        </label>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Multiple select</div>

        <label>
            S
            <input type="checkbox" data-role="segmented" name="week" disabled>
        </label>
        <label>
            M
            <input type="checkbox" data-role="segmented" name="week" checked>
        </label>
        <label>
            T
            <input type="checkbox" data-role="segmented" name="week" >
        </label>
        <label>
            W
            <input type="checkbox" data-role="segmented" name="week" >
        </label>
        <label>
            T
            <input type="checkbox" data-role="segmented" name="week">
        </label>
        <label>
            F
            <input type="checkbox" data-role="segmented" name="week" >
        </label>
        <label>
            S
            <input type="checkbox" data-role="segmented" name="week" disabled>
        </label>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Text and Icon</div>

        <label>
            Featured
            <input type="radio" data-role="segmented" data-icon="material-star" name="app" checked>
        </label>
        <label>
            Explore
            <input type="radio" data-role="segmented" data-icon="material-explore" name="app">
        </label>
        <label>
            Updates
            <input type="radio" data-role="segmented" data-icon="material-system-update" name="app">
        </label>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Icon</div>

        <label>
            <input type="radio" data-role="segmented" data-icon="fa-mail-reply" name="settings">
        </label>
        <label>
            <input type="radio" data-role="segmented" data-icon="fa-retweet" name="settings">
        </label>
        <label>
            <input type="radio" data-role="segmented" data-icon="star3" name="settings" checked>
        </label>
        <label>
            <input type="radio" data-role="segmented" data-icon="cogs" name="settings">
        </label>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Disabled</div>

        <label>
            Idividual
            <input type="radio" data-role="segmented" name="org" disabled checked>
        </label>
        <label>
            Team
            <input type="radio" data-role="segmented" name="org" disabled>
        </label>
        <label>
            Company
            <input type="radio" data-role="segmented" name="org" disabled>
        </label>
    </div>
</div>

Forms - Date Slider

Choose demo
$(function () {
    var dayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
        monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
        d = new Date(),
        diff = d.getDate() - d.getDay(),
        nextSunday = new Date(d.setDate(diff + 7)),
        nextWeek = {};

    function setText(d) {
        $('.md-date').text(monthNames[d.getMonth()] + " " + d.getDate());
    }

    $('#slider').change(function (ev) {
        setText(nextWeek[Math.round($(this).val())])
    });

    $('#demo').mobiscroll().form({
        theme: '',
        lang: ''
    });

    $('#slider').mobiscroll().slider({
        theme: '',
        lang: '',
        display: '',
        highlight: false,
        onInit: function (event, inst) {
            var labels = $('#slider').parent().find('.mbsc-progress-step-label');
            $.each(labels, function (i, v) {
                nextWeek[Math.round($(v).text())] = new Date(nextSunday.getFullYear(), nextSunday.getMonth(), nextSunday.getDate() + i); // generate nextWeek object
                $(v).text(dayNames[i]); // replace labels
            });
            setText(nextSunday);
        }

    });
});
<div id="demo" style="display: none" class="md-dateslider">
    <div class="mbsc-padding md-header">
        Pick the day for your next visit
    </div>
    <div class="mbsc-form-group-inset">
        <label>    
            <input id="slider" type="range" value="0"  data-step-labels="[0, 16.66, 33.32, 50, 66.64, 83.3, 100]" step="16.66" />
        </label>
    </div>
    <div class="mbsc-padding">
        <div class="md-check-cont"><span class="md-check mbsc-ic mbsc-ic-material-check"></span></div>
        We’ll see each other next week on
        <div><a href="" class="md-date">Feb 1</a> @ 5PM</div>
    </div>

</div>
.mbsc-padding.md-header {
    font-size: 1.25em;
    font-weight: 400;
    padding: .8em .8em .4em .8em;
}

.md-dateslider .mbsc-padding {
    text-align: center;
}

.md-check-cont {
    padding: 8px 0 16px 0;
}

.md-check {
    display: inline-block;
    width: 32px;
    height: 32px;
    font-size: 26px;
    padding: .2em;
    line-height: 23px;
    border-radius: 33px;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
}

.demo-theme-mobiscroll .md-check {
    background: #4ECCC4;
    color: #f7f7f7;
}

.demo-theme-mobiscroll-dark .md-check {
    background: #4ECCC4;
    color: #263238;
}

.demo-theme-material .md-check {
    background: #009688;
    color: #eee;
}

.demo-theme-material-dark .md-check {
    background: #81ccc4;
    color: #f7f7f7;
}

.demo-theme-ios .md-check {
    background: #1272dc;
    color: #f5f5f5;
}

.demo-theme-ios-dark .md-check {
    background: #ff8400;
    color: #1a1a1a;
}

.demo-theme-android-holo .md-check {
    background: #31c6e7;
    color: #000;
}

.demo-theme-android-holo-light .md-check {
    background: #31c6e7;
    color: #f5f5f5;
}

.demo-theme-wp .md-check {
    background: #1a9fe0;
    color: #000;
}

.demo-theme-wp-light .md-check {
    background: #1a9fe0;
    color: #fff;
}

Forms - Profile

Choose demo
mobiscroll.settings = {
    lang: '',
    theme: ''
};

$(function () {
    var lvInst;

    function call(event, target) {
        window.location.href = 'tel:' + $(event.target).data('phone');
    }

    function mail(event, target) {
        window.location.href = 'mailto:hello@mobiscroll.com?subject=Awesome Mobiscroll Demo';
    }

    function navigate(event, target) {
        window.location.href = 'http://maps.google.com/maps?daddr=' + $(event.target).text();
    };

    $('.contact-detail').mobiscroll().listview({
        enhance: true,
        swipe: false,
        stages: [],
        onInit: function (event, inst) {
            $('.contact-hdr').removeClass('mbsc-lv-parent');
            lvInst = inst;
        },
        itemGroups: {

            phone: {
                tap: call
            },
            email: {
                tap: mail
            },
            address: {
                tap: navigate
            }
        },
    });

    $('.md-phone').mobiscroll().numpad({
        display: 'bottom',
        cssClass: 'md-phone-num',
        template: '{plus}ddddddddddd',
        maxLength: 14,
        allowLeadingZero: true,
        leftKey: {
            text: '+',
            value: '',
            variable: 'plus:+'
        },
        formatValue: function (numbers, vars, inst) {
            var newVal = ' ';

            if (vars.plus) {
                newVal += vars.plus;
            }

            newVal += numbers.join().replace(/,/g, '');

            return newVal;
        },
        parseValue: function (value) {
            if (value) {
                return value.toString().split('');
            }
            return [];
        },
        validate: function (event, inst) {
            var disabled = [],
                invalid = false;

            if (inst.isVisible()) {
                inst._markup[0].querySelector('.mbsc-np-dsp').innerHTML = inst.settings.formatValue(event.values, event.variables, inst) || '&nbsp;'
            }

            return {
                invalid: invalid,
                disabled: disabled
            };
        }

    });

    $('.crm-edit-btn').off().on('click', function (ev) {
        lvInst.navigate('edit-form');
    });

    $('.contact-detail-save').off().on('click', function (ev) {
        lvInst.navigate('contact-detail');
    });

});
<div id="demo" class="md-contacts">
    <ul class="contact-detail" style="display: none;">
        <li class="contact-hdr" data-id="contact-detail">
            <div class="md-header" mbsc-form>
                <img src="/Content/img/f1.png" class="contact-icon" />
                <h4 class="contact-name">Hortense Tinker</h4>
                <button class="crm-edit-btn">Edit</button>
                <div class="contact-cat-tag">Leads</div>
            </div>
            <ul class="contact-detail-edit">
                <li class="crm-form-cont" data-id="edit-form">
                    <div mbsc-form>
                        <div class="mbsc-form-group">
                            <div class="mbsc-form-group-title">Contact Details</div>
                            <label>
                                Name
                                <input name="Name" type="text" placeholder="Name" data-icon="user4" name="name" value="Hortense Tinker">
                            </label>

                            <label>
                                Address
                                <textarea placeholder="Address" data-icon="location" name="address" >630 Medical Drive, Bountiful, UT 84010</textarea>
                            </label>

                            <label>
                                Company
                                <input type="text" placeholder="Company" data-icon="office" name="company" value="Mobiscroll">
                            </label>
                        </div>
                        <div class="mbsc-form-group">
                            <div class="mbsc-form-group-title">Phone</div>
                            <label>
                                Home
                                <input type="tel" class="md-phone" placeholder="Phone" name="phone" data-icon="phone" value="+12225550127">
                            </label>

                            <label>
                                Work
                                <input type="tel" class="md-phone" placeholder="Phone" name="phone" data-icon="phone" value="+12225550128">
                            </label>
                        </div>
                        <div class="mbsc-form-group">
                            <div class="mbsc-form-group-title">Email</div>
                            <label>
                                Home
                                <input type="email" placeholder="Phone" name="email" data-icon="foundation-mail" value="hortense.tinker@gmail.com">
                            </label>

                            <label>
                                Work
                                <input type="email" placeholder="Phone" name="email" data-icon="foundation-mail" value="hortense.tinker@mobiscroll.com">
                            </label>
                        </div>
                        <div class="contact-detail-save mbsc-form-group mbsc-btn-group">
                            <button class="mbsc-btn-block" data-icon="checkmark">Save</button>
                        </div>
                    </div>
                </li>
            </ul>
        </li>
        <li data-role="list-divider">Company</li>
        <li>Mobiscroll</li>
        <li data-role="list-divider">Address</li>
        <li data-icon="ion-navigate" data-type="address" data-icon-align="right">630 Medical Drive, Bountiful, UT 84010</li>
        <li data-role="list-divider">Phone</li>
        <li data-icon="phone" data-type="phone" data-phone="(202) 555-0127" data-icon-align="right">
            <h3 class="mbsc-lv-txt">Home</h3>
            <p class="mbsc-lv-txt">(202) 555-0127</p>
        </li>
        <li data-icon="phone" data-type="phone" data-phone="(202) 555-0128" data-icon-align="right">
            <h3 class="mbsc-lv-txt">Work</h3>
            <p class="mbsc-lv-txt">(202) 555-0128</p>
        </li>
        <li data-role="list-divider">Email</li>
        <li data-icon="foundation-mail" data-type="email" data-icon-align="right">
            <h3 class="mbsc-lv-txt">Home</h3>
            <p class="mbsc-lv-txt">hortense.tinker@gmail.com</p>
        </li>
        <li data-icon="foundation-mail" data-type="email" data-icon-align="right">
            <h3 class="mbsc-lv-txt">Work</h3>
            <p class="mbsc-lv-txt">hortense.tinker@mobiscroll.com</p>
        </li>
    </ul>

</div>
.md-contacts .contact-detail .md-header {
    background: none;
}

.md-header .contact-name {
    margin: 0;
}

.md-contacts .mbsc-lv-cont .contact-detail .contact-hdr {
    min-height: 80px;
    padding-left: 110px;
}

.contact-hdr .mbsc-lv-arr {
    display: none;
}

.md-contacts .contact-detail .contact-hdr .contact-icon {
    max-width: 80px;
    max-height: 80px;
    left: 50px;
}

.contact-detail h3.mbsc-lv-txt {
    font-size: 1.125em;
    position: relative;
}

.contact-detail .contact-cat-tag {
    position: relative;
    display: inline-block;
    padding: 0 5px;
    margin: 0 5px 5px 10px;
    background: #888;
    color: #fff;
    font-size: 12px;
    line-height: 26px;
    text-shadow: none;
    text-transform: lowercase;
}

.contact-name {
    line-height: 40px;
}

.contact-detail .contact-cat-tag:before {
    content: '';
    position: absolute;
    top: 0;
    left: -9px;
    width: 0;
    height: 8px;
    border-color: transparent #888 transparent transparent;
    border-style: solid;
    border-width: 9px 9px 9px 0;
    -webkit-box-sizing: content-box;
    -moz-box-sizing: content-box;
    box-sizing: content-box;
}

.contact-detail .contact-cat-tag:after {
    content: '';
    position: absolute;
    top: 11px;
    left: -3px;
    width: 4px;
    height: 4px;
    background: #fff;
    border-radius: 2px;
}

.md-contacts .contact-detail-edit .crm-form-cont {
    padding: 0;
}

.md-contacts .contact-detail .crm-edit-btn {
    position: absolute;
    right: 10px;
    top: 17px;
    font-size: .875em;
    line-height: normal;
}

.md-phone-num .mbsc-np-dsp {
    min-height: 25px;
    -webkit-box-sizing: content-box;
    -moz-box-sizing: content-box;
    box-sizing: content-box;
}

Forms - Log in

Choose demo
// Use the settings object to change the theme
mobiscroll.settings = {
    lang: '',
    theme: ''
};

$(function () {
    var isLogin = false;
    $('#demo').on('submit', function (ev) {
        if ($(this).valid()) {
            ev.preventDefault();
            $('#demo-success').mobiscroll('show');
        }
    }).validate({
        errorClass: 'mbsc-err-msg',
        errorPlacement: function (error, element) {
            element.parent().append(error);
        },
        highlight: function (element) {
            $(element).closest('.mbsc-input').addClass("mbsc-err");
        },
        unhighlight: function (element) {
            $(element).closest('.mbsc-input').removeClass("mbsc-err");
        },
        rules: {
            "email": {
                required: true,
                email: true
            },
            "password": {
                required: true,
                minlength: 6
            }
        },
        messages: {
            "email": {
                required: "Email required",
                email: "Invalid email address"
            },
            "password": {
                required: 'Password required',
                minlength: "At least 6 characters required"
            }
        }
    });

    $('.md-signup').on('click', function (ev) {
        ev.preventDefault();
        $('.md-signup-btn').text(isLogin ? 'Sign in' : 'Sign up');
        $(this).text(isLogin ? "Don't have an account yet? Sign up." : "Already have an account?");
        isLogin = !isLogin;
    });

    $('.md-login').on('click', function (ev) {
        ev.preventDefault();
    });

});
<form id="demo" class="md-login-form" style="display:none" mbsc-form>
    <div class="md-logo micons icon-mbsc-logo"></div>
    <div class="mbsc-form-group-inset">
        <label>
            <input id="email" type="email" name="email" placeholder="Email" />
        </label>
        <label>
            <input name="password" type="text" placeholder="Password" data-password-toggle="true" data-icon="none" data-icon-align="right" />
        </label>
    </div>
    <div class="mbsc-form-group-inset mbsc-padding mbsc-align-center">
        <a href="#" class="md-signup">Don't have an account yet? Sign up.</a>
        <br><br>
        <a href="#" class="md-login">Forgot password?</a>
    </div>
    <div class="mbsc-form-group-inset mbsc-padding">
        <button class="mbsc-btn-block md-signup-btn" type="submit">Sign in</button>
    </div>
</form>
.md-login-form .md-logo {
    display: inline-block;
    width: 100%;
    font-size: 80px;
    text-align: center;
    height: 46px;
    margin: 130px 0 30px 0;
    color: #1c75bc;
}

Forms - Flight booking

Choose demo
// Use the settings object to change the theme
mobiscroll.settings = {
    lang: '',
    theme: ''
};

$(function () {

    var now = new Date(),
        oneWay = false,
        range,
        departureDate,
        returnDate;

    range = $('.md-leaving-date').mobiscroll().range({
        display: 'bottom',
        endInput: '.md-return-date',
        min: now,
        showSelector: false,
        onSetDate: function (event, inst) {
            if (oneWay && event.control == 'calendar' && event.active == 'start') {
                inst._isVisible = false;
                inst.setActiveDate('start');
                inst._isVisible = true;
            }
            if (inst._markup) {
                inst._isValid = true;
                inst._markup.find('.mbsc-fr-btn-s .mbsc-fr-btn').removeClass('mbsc-fr-btn-d');
            }
        },
        onBeforeClose: function () {
            if (oneWay) {
                return true;
            }
        },
        onSet: function (event, inst) {
            var values = inst.getVal();
            departureDate = values[0];
            if (!oneWay) {
                returnDate = values[1];
            }
        }
    }).mobiscroll('getInst');

    departureDate = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 3);
    returnDate = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 7);
    range.setVal([departureDate, returnDate], true);

    $('.md-place-select').mobiscroll().select({
        placeholder: 'Please select',
        multiline: 2,
        height: 50,
        data: {
            url: 'https://trial.mobiscroll.com/airports/',
            remoteFilter: true,
            dataType: 'jsonp',
            processResponse: function (data) {
                var i,
                    item,
                    ret = [];

                if (data) {
                    for (i = 0; i < data.length; i++) {
                        item = data[i];
                        ret.push({
                            value: item.code,
                            text: item.name,
                            html: '<div style="font-size:16px;line-height:18px;">' + item.name + '</div><div style="font-size:10px;line-height:12px;">' + item.location + ', ' + item.code + '</div>'
                        });
                    }
                }

                return ret;
            }
        },
        filter: true
    });


    $('.md-flight-type').on('change', function () {
        oneWay = this.value == 'oneway';
        $('.md-return-date').prop('disabled', oneWay);
        if (oneWay) {
            range.setVal([departureDate, null], true);
        } else {
            returnDate = new Date(departureDate.getFullYear(), departureDate.getMonth(), departureDate.getDate() + 4);
            range.setVal([departureDate, returnDate], true);
        }
    });

});
<div id="demo" class="md-flight-booking" style="display:none" mbsc-form>

    <div class="md-header">Book a flight</div>

    <div class="md-ftype-cont">
        <label>
            Round trip
            <input type="radio" data-role="segmented" value="round" name="triptype" class="md-flight-type" checked />
        </label>
        <label>
            One way
            <input type="radio" data-role="segmented" value="oneway" name="triptype" class="md-flight-type md-one-way" />
        </label>
    </div>

    <label>
        Origin
        <select class="md-place-select md-origin">
            <option value="LTN">London Luton</option>
        </select>
    </label>
    <label>
        Destination
        <select class="md-place-select md-destination">
            <option>Please select a city</option>
        </select>
    </label>
    <div class="md-time-range">
        <label>
            Leaving
            <input type="text" class="md-leaving-date" />
        </label>

        <label>
            Returning
            <input type="text" class="md-return-date" />
        </label>
    </div>

    <div>
        <label for="md-flight-adults">Adults</label>
        <span class="mbsc-desc">From 14 years</span>
        <input id="md-flight-adults" type="number" data-role="stepper" min="1" value="1" max="15" data-val="left" />
    </div>

    <div>
        <label for="md-flight-children">Children</label>
        <span class="mbsc-desc">2-14 years</span>
        <input id="md-flight-children" type="number" data-role="stepper" max="15" data-val="left" />
    </div>

    <div>
        <label for="md-flight-infant">Infant</label>
        <span class="mbsc-desc">0-2 years</span>
        <input id="md-flight-infant" type="number" data-role="stepper" max="10" data-val="left" />
    </div>

    <label>
        Economy
        <input type="radio" data-role="segmented" name="flight_type" checked />
    </label>
    <label>
        Comfort
        <input type="radio" data-role="segmented" name="flight_type" />
    </label>
    <label>
        Business
        <input type="radio" data-role="segmented" name="flight_type" />
    </label>

    <div class="mbsc-padding">
        <button class="mbsc-btn-block">Find Flights</button>
    </div>

</div>
.md-flight-booking {
    padding: 0!important;
}

.md-filter-cont {
    padding: .5em;
}


/* header */

.md-flight-booking .md-ftype-cont {
    padding-top: 1.15em;
}

.md-flight-booking .md-header {
    background: #4ECCC4;
    padding: 1em;
    color: #fff;
    text-align: center;
}

.mbsc-material .md-header {
    background: #009688;
}

.mbsc-android-holo .md-header {
    background: #31c6e7;
}

.mbsc-ios .md-header {
    background: #1272dc;
    color: #fff;
}

.mbsc-ios-dark .md-header {
    background: #ff8400;
    color: #1a1a1a;
}

.mbsc-wp .md-header {
    background: #1a9fe0;
    color: #000;
}

.mbsc-material-dark .md-header {
    color: #303030;
    background: #81ccc4;
}

.mbsc-android-holo-light .md-header {
    color: #000;
}

.mbsc-mobiscroll-dark .md-header {
    color: #263238;
}


/*select*/

.md-airports-booking .mbsc-sc-itm,
.md-airports-booking .dw-li {
    text-align: center;
}

.md-airports-booking .md-airport {
    width: 100%;
    display: inline-block;
    vertical-align: middle;
    letter-spacing: normal;
}

.md-airports-booking .md-airport-name {
    height: 18px;
    line-height: 18px;
    font-size: 16px;
    overflow: hidden;
    text-overflow: ellipsis;
}

.md-airports-booking .md-airport-location {
    height: 12px;
    line-height: 12px;
    font-size: 10px;
    overflow: hidden;
    text-overflow: ellipsis;
}

.md-airports-booking #filter_input {
    width: 100%;
    padding: 6px;
    box-sizing: border-box;
}


/* range inputs */

.md-flight-booking .md-time-range {
    overflow: hidden;
    width: 99%;
}

.md-flight-booking.mbsc-ios .md-time-range {
    background: #fff;
}

.md-flight-booking .md-time-range .mbsc-input {
    float: left;
    width: 50%;
    box-sizing: border-box;
}

.md-flight-booking.mbsc-ios .md-time-range .mbsc-input {
    display: block;
}

.md-flight-booking.mbsc-ios .md-time-range .mbsc-input .mbsc-label {
    font-size: 14px;
    padding-left: 1.14285em;
    padding-top: 0.75em;
    line-height: 22px;
}

.md-flight-booking.mbsc-ios .md-time-range .mbsc-input .mbsc-label {
    width: 100%;
}

.md-time-range .mbsc-input:first-child {
    padding-right: .5em;
}

.md-time-range .mbsc-input:last-child {
    padding-left: .5em;
}


/* Stepper */

.md-flight-booking.mbsc-form .mbsc-stepper-cont {
    padding-top: 1.125em;
    padding-bottom: 1.125em;
}

Forms - Checklist

Choose demo
mobiscroll.settings = {
    lang: '',
    theme: ''
};
<div id="demo" class="md-food-cl" style="display:none" mbsc-form>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Category</div>
        <label>
            <input type="checkbox" checked>
            <span class="mbsc-label"> <span class="micons icon-starter md-food-ic"> </span>starter </span>
        </label>
        <label>
            <input type="checkbox" checked>
            <span class="mbsc-label"> <span class="micons icon-main md-food-ic"> </span>main</span>
        </label>
        <label>
            <input type="checkbox"> 
            
            <span class="mbsc-label"> <span class="micons icon-dessert md-food-ic"> </span>dessert</span>
        </label>
        <label>
            <input type="checkbox">
            <span class="mbsc-label"> <span class="micons icon-snack md-food-ic"> </span>snack</span>
        </label>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Main Ingredient</div>

        <label>
            <input type="checkbox" checked>
            <span class="mbsc-label"> <span class="micons icon-poultry md-food-ic"> </span>poultry</span>
        </label>
        <label>
            <input type="checkbox" checked>
            <span class="mbsc-label"> <span class="micons icon-beef md-food-ic"> </span>beef</span>
        </label>
        <label>
            <input type="checkbox" checked> 
            <span class="mbsc-label"> <span class="micons icon-pork md-food-ic"> </span>pork</span>
        </label>
        <label>
            <input type="checkbox" checked>
            <span class="mbsc-label"> <span class="micons icon-seafood md-food-ic"> </span>seafood</span>
        </label>
        <label>
            <input type="checkbox">
            <span class="mbsc-label"> <span class="micons icon-vegetarian md-food-ic"> </span>vegetarian</span>
        </label>
        <label>
            <input type="checkbox"> 
            <span class="mbsc-label"> <span class="micons icon-vegan md-food-ic"> </span>vegan</span>
        </label>
    </div>
</div>

Forms - Price Range

Choose demo
// Use the settings object to change the theme
mobiscroll.settings = {
    lang: '',
    theme: ''
};

$(function () {

    $('.md-price-start').change(function (ev) {
        $('.md-text-start').text('$' + ev.target.value);
    });

    $('.md-price-end').change(function (ev) {
        $('.md-text-end').text('$' + ev.target.value);
    });

})
<div id="demo" class="md-slide-range" style="display: none" mbsc-form>
    <div class="mbsc-form-group-inset">
        <label class="md-slider">
            <span class="md-val md-val-left">$10</span>
            <input class="md-price-start" type="range" value="100" min="10" max="600" data-tooltip="true" data-template="${value}">
            <input class="md-price-end" type="range" value="500" min="10" max="600"  />
            <span class="md-val md-val-right">$600</span>
        </label>
    </div>
    <div class="md-text mbsc-padding">
        <h4>Price Range</h4>
        <div class="md-range-text"> from <span class="md-text-start">$100</span> to <span class="md-text-end">$500</span></div>
    </div>
</div>
.md-slide-range {
    padding-top: 4em;
}

.md-slide-range .mbsc-form-group-inset {
    position: relative;
}

.md-slide-range .md-slider.mbsc-slider,
.md-slide-range .md-slider .mbsc-slider {
    padding: 0 3em;
}

.md-slide-range .md-val {
    position: absolute;
    top: 50%;
    margin-top: -.571428em;
    font-size: 14px;
}

.md-slide-range .md-val-left {
    left: 12px;
}

.md-slide-range .md-val-right {
    right: 6px;
}

.md-slide-range .md-text {
    text-align: center;
}

.md-slide-range .md-range-text {
    font-size: 14px;
}

.md-slide-range.mbsc-ios .mbsc-slider {
    width: 100%;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
}

.md-slide-range .mbsc-slider-tooltip:before {
    content: '$';
}

Forms - Wishlist

Choose demo
mobiscroll.settings = {
    lang: '',
    theme: ''
};


$(function () {
    $('.md-wish').off().click(function (ev) {
        var added,
            btn = $(this);

        btn.toggleClass('.md-wish-added');
        added = btn.hasClass('.md-wish-added');
        btn.find('.md-wish-text').text(added ? 'Remove from wishlist' : 'Add to wishlist');
        btn.find('.mbsc-ic').toggleClass('mbsc-ic-plus').toggleClass('mbsc-ic-minus');
        mobiscroll.toast({
            message: added ? 'Added to wishlist' : 'Removed from wishlist'
        });
    });
});
<div class="md-wishlist" mbsc-form>
    <img src="/content/img/demos/nike.png" class="md-wishlist-img">
    <div class=" mbsc-padding">
        <div class="md-title">Nike Women's Air Relentless 3 Running </div>
        <div class="md-desc md-center">
            <div>Great lightweight pattern with a midfoot TPU panel for lockdown. </div>
            <div>Phylite midsole for a lightweight ride and air unit in the heel offer the right blend of cushioning and a smooth ride. </div>
            <div>BRS 1000 outsole in the crash pad for durability.</div>
        </div>

        <div class="md-price md-center"><span class="md-old-price">$110</span> <span class="md-new-price">$64.99</span></div>

        <button class="mbsc-btn mbsc-btn-block md-wish" data-icon="plus"><span class="md-wish-text">Add to wishlist</span></button>
        <button class="mbsc-btn mbsc-btn-block">Add to cart</button>
    </div>
</div>
.md-wishlist {
    font-size: 16px;
}

.md-wishlist .md-wishlist-img {
    width: 280px;
    padding-top: 3em;
    margin: 0 auto;
    display: block;
}

.md-wishlist .md-title {
    text-transform: uppercase;
    text-align: center;
    font-size: 1.4em;
    padding: .5em 0;
}

.md-wishlist .md-price {
    font-size: 20px;
    padding-bottom: 1em;
    text-align: center;
}

.md-wishlist .md-price .md-new-price {
    color: red;
}

.md-wishlist .md-price .md-old-price {
    text-decoration: line-through;
}

.md-wishlist .md-desc {
    padding-bottom: 2em;
    font-size: 14px;
    color: #a0a0a0;
}

.md-wishlist .md-desc div {
    padding-top: .75em;
}

.md-wishlist .md-center {
    text-align: center;
}

.md-wishlist .md-wish.mbsc-btn {
    margin-bottom: 1em;
}

Forms - Sign up

Choose demo
// Use the settings object to change the theme
mobiscroll.settings = {
    lang: '',
    theme: ''
};


$(function () {
    $('#demo').on('submit', function (ev) {
        if ($(this).valid()) {
            ev.preventDefault();
            $('#demo-success').mobiscroll('show');
        }
    }).validate({
        errorClass: 'mbsc-err-msg',
        errorPlacement: function (error, element) {
            element.parent().append(error);
        },
        highlight: function (element) {
            $(element).closest('.mbsc-input').addClass("mbsc-err");
        },
        unhighlight: function (element) {
            $(element).closest('.mbsc-input').removeClass("mbsc-err");
        },
        rules: {
            "password": {
                required: true,
                regex: '^(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{6,}$'
            }
        },
        messages: {
            "password": {
                regex: "Invalid, please see rules"
            }
        }
    });

});
<form id="demo" class="md-signup-rules" style="display:none" ng-non-bindable mbsc-form>

    <div class="mbsc-form-group-inset">
        <div class="mbsc-form-group-title md-signup-title">Sign Up</div>

        <label>
            <input name="username" type="text" placeholder="Name" minlength="4" required>
        </label>

        <label>
            <input name="email" type="email" placeholder="Email" required>
        </label>

        <label>
            <input id="password" name="password" type="text" placeholder="Password"  required data-password-toggle="true">
        </label>
    </div>

    <div class="mbsc-form-group-inset">
        <div class="mbsc-padding">
            <h6 class="mbsc-desc">Use lowercase and uppercase characters </h6>
            <h6 class="mbsc-desc">Length of password should be at least 6 characters</h6>
        </div>
        <div class="mbsc-padding">
            <button class="mbsc-btn-block" type="submit">Sign Up</button>
        </div>
    </div>

</form>

Forms - Create account

Choose demo
// Use the settings object to change the theme
mobiscroll.settings = {
    lang: '',
    theme: ''
};


$(function () {
    $('.md-phone').mobiscroll().numpad({
        display: 'bottom',
        cssClass: 'md-phone-num',
        template: '{plus}dddddddddddddd',
        maxLength: 14,
        allowLeadingZero: true,
        leftKey: {
            text: '+',
            value: '',
            variable: 'plus:+'
        },
        formatValue: function (numbers, vars, inst) {
            var newVal = ' ';

            if (vars.plus) {
                newVal += vars.plus;
            }

            newVal += numbers.join().replace(/,/g, '');

            return newVal;
        },
        parseValue: function (value) {
            if (value) {
                return value.toString().split('');
            }
            return [];
        },
        validate: function (event, inst) {
            var disabled = [],
                invalid = false;

            if (inst.isVisible()) {
                inst._markup[0].querySelector('.mbsc-np-dsp').innerHTML = inst.settings.formatValue(event.values, event.variables, inst) || '&nbsp;'
            }

            return {
                invalid: invalid,
                disabled: disabled
            };
        }
    });
})
<div id="demo" class="md-create-account" style="display:none" mbsc-form>

    <div class="md-chart-pic"></div>

    <div class="md-cac-title mbsc-padding">
        <h4>Great news, your traffic <br> is already being tracked</h4>
        <h4>Continue by creating a new account</h4>
    </div>
    <div class="md-cac-cont">
        <div class="mbsc-form-group-inset">
            <label>
                    <input name="username" type="text" placeholder="Name">
                </label>

            <label>
                    <input name="email" type="email" placeholder="Email address">
                </label>

            <label>
                    <input name="password" type="text" placeholder="Password"  data-password-toggle="true">
                </label>

            <label>
                    <input name="phone" type="tel" placeholder="Phone" class="md-phone">
                </label>
        </div>
        <div class="md-cac-btn mbsc-form-group-inset">
            <button class="mbsc-btn-block" type="submit">Create account</button>
            <button class="mbsc-btn-flat mbsc-btn-block"> I'll do it later</button>
        </div>
    </div>
</div>
.md-create-account {
    padding: 0!important;
}

.md-create-account .md-cac-title {
    text-align: center;
    padding-bottom: 3em;
}

.md-create-account .md-cac-title,
.md-create-account .md-cac-cont {
    padding-top: 0;
}

.md-create-account .md-cac-cont {
    padding-bottom: 0;
}

.md-create-account .md-chart-pic {
    background-image: url("/content/img/demos/chart@1x.png");
    height: 150px;
    background-repeat: no-repeat;
    background-position: center;
}

@media (-webkit-min-device-pixel-ratio: 2),
(min-resolution: 144dpi) {
    .md-create-account .md-chart-pic {
        background: url("/Content/img/demos/chart@2x.png") no-repeat center 12px;
        background-size: 109px 81px;
        background-position: center;
    }
}

.md-phone-num .mbsc-np-dsp {
    min-height: 25px;
    -webkit-box-sizing: content-box;
    -moz-box-sizing: content-box;
    box-sizing: content-box;
}

Forms - Alert

Choose demo
mobiscroll.settings = {
    theme: '',
    lang: '',
    display: ''
};

$(function () {

    $('#md-notif-alert').on('click', function () {
        mobiscroll.alert({
            title: 'Cellular Data is Turned Off for "Safari"',
            message: 'You can turn on cellular data for this app in Settings.',
            callback: function () {
                mobiscroll.toast({
                    message: 'Alert closed'
                });
            }
        });
    });

    $('#md-notif-confirm').on('click', function () {
        mobiscroll.confirm({
            title: 'Use location service?',
            message: 'Help apps determine location. This means sending anonymous location data, even when no apps are running.',
            okText: 'Agree',
            cancelText: 'Disagree',
            callback: function (res) {
                mobiscroll.toast({
                    message: res ? 'Agreed' : 'Disagreed'
                });
            }
        });
    });

    $('#md-notif-prompt').on('click', function () {
        mobiscroll.prompt({
            title: 'Sign in to iTunes Store',
            message: 'Enter the Apple ID password for "hello@mobiscroll.com".',
            placeholder: 'Password',
            inputType: 'password',
            callback: function (value) {
                mobiscroll.toast({
                    message: value === null ? 'Cancel was pressed.' : ('The password: ' + value)
                });
            }
        });
    });

});
<div id="demo" style="display:none;" mbsc-form>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Alerts</div>
    <div class="mbsc-btn-group-block">
        <button id="md-notif-alert">Alert</button>
        <button id="md-notif-confirm">Confirm</button>
        <button id="md-notif-prompt">Prompt</button>
    </div>
    </div>
</div>

Forms - Notifications

Choose demo
mobiscroll.settings = {
    theme: '',
    lang: '',
    display: ''
};

$(function () {

    $('#md-notif-toast').on('click', function () {
        mobiscroll.toast({
            message: 'Message sent'
        });
    });

    $('#md-notif-snackbar').on('click', function () {
        mobiscroll.snackbar({
            message: 'Your draft has been discarded'
        });
    });

    $('#md-notif-snackbar-action').on('click', function () {
        mobiscroll.snackbar({
            message: 'Connection timed out. Showing limited messages.',
            button: {
                text: 'Retry',
                action: function () {
                    mobiscroll.toast({
                        message: 'Retrying...'
                    });
                }
            }
        });
    });

});
<div id="demo" style="display:none;" mbsc-form>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Notifications</div>
    <div class="mbsc-btn-group-block">
        <button id="md-notif-toast">Toast</button>
        <button id="md-notif-snackbar">Snackbar</button>
        <button id="md-notif-snackbar-action">Snackbar with action</button>
    </div>
    </div>
</div>

Forms - Note

Choose demo
mobiscroll.settings = {
    lang: '',
    theme: ''
}
<div class="mbsc-align-center">
    <div class="mbsc-note mbsc-note-primary">This is a primary note!</div>
    <div class="mbsc-note mbsc-note-secondary">This is a secondary note!</div>
    <div class="mbsc-note mbsc-note-success">This is a success note!</div>
    <div class="mbsc-note mbsc-note-danger">This is a danger note!</div>
    <div class="mbsc-note mbsc-note-warning">This is a warning note!</div>
    <div class="mbsc-note mbsc-note-info">This is a info note!</div>
    <div class="mbsc-note mbsc-note-light">This is a light note!</div>
    <div class="mbsc-note mbsc-note-dark">This is a dark note!</div>
</div>
light
dark
light
dark

Looking for something you didn't see or have a sales question?
Ask us about it, we're here to help.

Customize & try demos locally
Please sign in or start a free trial to download

What is your main focus at the moment?

Javascript
jQuery
AngularJS
Angular
Ionic
React
Other
Select a framework
Select a framework
Email address
Select a framework

Install demo in your app
Follow steps to install mobiscroll and use example

Install Mobiscroll for Ionic

Step 1.

Install the Mobiscroll CLI from npm (you might need sudo access).

Copy command
$ npm install -g @mobiscroll/cli

Step 2.

Run the config command in the root folder of the Ionic project.
You will have to enter your email address/user and password (set password) of your mobiscroll account.
If you don't have an app, create a starter with the Ionic CLI $ ionic start myStarterApp tabs

Copy command
$ mobiscroll config ionic
If your app is using lazy loading, run $ mobiscroll config ionic --lazy instead.

If Mobiscroll is installed in your app, copy the demo code from below.
The HTML goes into markup, the Typescript into the TS file and the CSS into the page stylesheet (scss file). If you need to install mobiscroll use the CLI and follow these two simple steps.

Copy TS
Copy HTML
Copy CSS

Run ionic serve in the root folder of your app.

Copy command
$ ionic serve
Thanks for downloading
Try and customize the app locally

Extract the zip file and run the project like any Ionic app. Make sure to have Ionic CLI installed and open the terminal in the app root folder.

Step 1. Run in root folder
$ npm install
Step 2. Start the app
$ ionic serve

Let us know if we can help and enjoy!

Change your password
Need to update your password? Enter and hit the button below
New Password Required Enter at least 6 characters Please avoid dangerous characters like '<' or '&'
Change your password
Need to update your password? Enter and hit the button below

Your password has been changed!

Thanks for downloading
Customize demos locally

Everything is set up so that you can dig in right away and start exploring.

We have set up a trial so that you can try the demos locally.

Please extract the zip file and simply open the demos in your favorite browser. For instructions on how to install Mobiscroll in your project follow this guide.


Let us know if we can help and enjoy!

Thanks for downloading
Customize demos locally

The demos are using an in-browser TypeScript transpiler app as base. Please extract the zip file and open the index.html on your local development server.

Alternatively you can use live-server. For installation and usage, open a terminal window and follow these steps.

Step 1. Install live-server
$ npm install -g live-server
Step 2. Start server & run app
$ live-server

Let us know if we can help and enjoy!

Thanks for downloading
Customize demos locally

Everything is set up so that you can dig in right away and start exploring.

We have set up a trial so that you can try the demos locally.

The easiest way to get started is to follow the installation steps and by grabbing the code directly from the demo page. Let us know if we can help and enjoy!

You'll find a fully functional Kitchen-sink Ionic app in the zip file.

Thanks for downloading
Customize demos locally

Everything is set up so that you can dig in right away and start exploring.

We have set up a trial so that you can try the demos locally.

The demos are using Babel's in-browser ES6 and JSX transformer. Please extract the zip file and open the demos in your browser.


Let us know if we can help and enjoy!

Demos
Controls
Calendar 17
Cards 9
Color 8
Date & Time 12
Event Calendar 7
Forms 23
Image 5
Listview 18
Measurement 14
Navigation 6
Number 6
Numpad 12
Option List 4
Range 14
Scroller 5
Scrollview 4
Select 11
Styling 4
Timer 4
Timespan 5
Treelist 5
Widget 8
Demo Apps 5
Theme Select
Mobiscroll
Mobiscroll Dark
Material
Material Dark
iOS
iOS Dark
Windows
Windows Dark
Display Mode
Language Locale
See other demos and change options
Theme
Display
Locale
See other demos