Form components you’ll need for building great looking mobile and desktop apps. Shipping 15 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
  • Rating
  • Stepper
  • Page & typography
  • Slider
  • Progress
  • Alerts
  • Notifications
  • Notes


Forms demos available for other frameworks.

Viewing demos & code for

light
dark

Forms - Text Fields

Change demo
Text field input examples with single-line, multi-line, masked entry, reveal password, disabled, error message styling.
// Use the settings object to change the theme
mobiscroll.settings = {
    lang: '',
    theme: ''
};
<div id="demo" 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 class="mbsc-form-group-inset">
        <div class="mbsc-form-group-title">Inset fields</div>
        <label>
    		<input id="inset-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>

Forms - Select

Change demo
Select field and dropdown control examples with icon usage, error and disabled styling. With source code.
// Use the settings object to change the theme
mobiscroll.settings = {
    lang: '',
    theme: ''
};
<div id="demo" 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

Change demo
Checkbox and checklist demo and styling with or without description text. Supports disabled styling.
// Use the settings object to change the theme
mobiscroll.settings = {
    theme: '',
    lang: ''
};
<div 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 class="mbsc-form-group">
        <div class="mbsc-form-group-title">Checkbox colors</div>

        <label class="mbsc-checkbox-primary">
            Primary
            <input type="checkbox" checked>
        </label>
        <label class="mbsc-checkbox-secondary">
            Secondary
            <input type="checkbox" checked>
        </label>
        <label class="mbsc-checkbox-success">
            Success
            <input type="checkbox" checked>
        </label>
        <label class="mbsc-checkbox-danger">
            Danger
            <input type="checkbox" checked>
        </label>
        <label class="mbsc-checkbox-warning">
            Warning
            <input type="checkbox" checked>
        </label>
        <label class="mbsc-checkbox-info">
            Info
            <input type="checkbox" checked>
        </label>
    </div>
</div>

Forms - Switch

Change demo
Switch demo and styling with our without description. Use it instead of checkbox. Supporting disabled styling.
// Use the settings object to change the theme
mobiscroll.settings = {
    theme: '',
    lang: ''
};
<div 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 class="mbsc-form-group">
        <div class="mbsc-form-group-title">Switch colors</div>

        <label class="mbsc-switch-primary">
            Primary
            <input type="checkbox" data-role="switch" checked>
        </label>
        <label class="mbsc-switch-secondary">
            Secondary
            <input type="checkbox" data-role="switch" checked>
        </label>
        <label class="mbsc-switch-success">
            Success
            <input type="checkbox" data-role="switch" checked>
        </label>
        <label class="mbsc-switch-danger">
            Danger
            <input type="checkbox" data-role="switch" checked>
        </label>
        <label class="mbsc-switch-warning">
            Warning
            <input type="checkbox" data-role="switch" checked>
        </label>
        <label class="mbsc-switch-info">
            Info
            <input type="checkbox" data-role="switch" checked>
        </label>
    </div>
</div>

Forms - Radio buttons

Change demo
Radio button demo for single select option lists. Use it with or without description, supporting disabled styling.
// Use the settings object to change the theme
mobiscroll.settings = {
    lang: '',
    theme: ''
};
<div 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 class="mbsc-form-group">
        <div class="mbsc-form-group-title">Radio button colors</div>

        <label class="mbsc-radio-primary">
            Primary
            <input type="radio" name="color" >
        </label>
        <label class="mbsc-radio-secondary">
            Secondary
            <input type="radio" name="color">
        </label>
        <label class="mbsc-radio-success">
            Success
            <input type="radio" name="color" checked>
        </label>
        <label class="mbsc-radio-danger">
            Danger
            <input type="radio" name="color">
        </label>
        <label class="mbsc-radio-warning">
            Warning
            <input type="radio" name="color">
        </label>
        <label class="mbsc-radio-info">
            Info
            <input type="radio" name="color">
        </label>
    </div>
</div>

Forms - Buttons

Change demo
Button styling with full-width and justified layout along with icons, borderless and outline multi-color rendering.
// Use the settings object to change the theme
mobiscroll.settings = {
    lang: '',
    theme: ''
};
<div 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 - Validation

Change demo
Form validation example with required constraint and custom logic on input, select and various data types.
mobiscroll.settings = {
    lang: '',
    theme: ''
};

$(function () {

    $('#demo').on('submit', function (ev) {
        if ($(this).valid()) {
            ev.preventDefault();
            mobiscroll.alert({
                title: 'Thank you for registering',
                message: 'You have successfully signed up as a user!',
                okText: 'Log in'
            });
        }
    }).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");
        },
        messages: {
            username: {
                required: 'Username is required.',
                minlength: $.validator.format('Has to be at least {0} characters')
            },
            bio: {
                required: 'Tell us about yourself',
                minlength: "Don't be shy, surely you can tell more"
            },
            gender: {
                required: 'Gender required'
            },
            email: {
                required: 'Email address is required',
                email: 'Invalid email address'
            },
            password: {
                required: 'Password is required',
                minlength: $.validator.format('Has to be at least {0} characters')
            }
        }
    });

});
<div mbsc-form novalidate>
    <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>
        <label>
            <select id="gender" name="gender" required data-icon="user4">
                <option value="">Please select</option>
                <option value="female">Female</option>
                <option value="male">Male</option>
            </select>
        </label>
        <label>
            <textarea name="bio" placeholder="About me" required minlength="20" data-icon="line-note"></textarea>
        </label>
    </div>

    <div class="mbsc-form-group mbsc-btn-group-block">
        <button data-icon="checkmark" type="submit">Sign Up</button>
    </div>
</div>

Forms - Slider

Change demo
Slider examples with single, multiple handles supporting icons, inline values, steps, floating and discrete slider.
mobiscroll.settings = {
    lang: '',
    theme: ''
};
<div 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 class="mbsc-form-group">
        <div class="mbsc-form-group-title">Slider colors</div>
        <label class="mbsc-slider-primary">
            Primary
            <input type="range" value="45" data-tooltip="true">
        </label>

        <label class="mbsc-slider-secondary">
            Secondary
            <input type="range" value="45" data-tooltip="true">
        </label>

        <label class="mbsc-slider-success">
            Success
            <input type="range" value="45" data-tooltip="true">
        </label>

        <label class="mbsc-slider-danger">
            Danger
            <input type="range" value="45" data-tooltip="true">
        </label>

        <label class="mbsc-slider-warning">
            Warning
            <input type="range" value="45" data-tooltip="true">
        </label>

        <label class="mbsc-slider-info">
            Info
            <input type="range" value="45" data-tooltip="true">
        </label>
    </div>
</div>

Forms - Stepper

Change demo
Stepper example with fixed/custom steps, editable values, numerical keypad integration. Supports different styles.
mobiscroll.settings = {
    lang: '',
    theme: ''
};

$(function () {

    var cbAllow = $('.md-allow'),
        stepperLuggage = $('.md-luggage');

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

});
<div 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 colors</div>
        <label class=" mbsc-stepper-primary">
            Primary
            <input type="number" data-role="stepper" value="100" min="-500" max="500" step="100">
        </label>

        <label class=" mbsc-stepper-secondary">
            Secondary
            <input type="number" data-role="stepper" value="100" min="-500" max="500" step="100">
        </label>

        <label class=" mbsc-stepper-success">
            Success
            <input type="number" data-role="stepper" value="100" min="-500" max="500" step="100">
        </label>

        <label class=" mbsc-stepper-danger">
            Danger
            <input type="number" data-role="stepper" value="100" min="-500" max="500" step="100">
        </label>

        <label class=" mbsc-stepper-warning">
            Warning
            <input type="number" data-role="stepper" value="100" min="-500" max="500" step="100">
        </label>

        <label class=" mbsc-stepper-info">
            Info
            <input type="number" data-role="stepper" value="100" min="-500" max="500" step="100">
        </label>
    </div>
</div>

Forms - Progress

Change demo
Progress indicator with custom steps, labels, icons, percentage and event hooks for programmatic interaction.
// 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" 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 class="mbsc-form-group">
        <div class="mbsc-form-group-title">Progress colors</div>

        <label class="mbsc-progress-primary">
            Primary
            <progress value="30" max="100"></progress>
        </label>

        <label class="mbsc-progress-secondary">
            Secondary
            <progress value="50" max="100"></progress>
        </label>

        <label class="mbsc-progress-success">
            Success
            <progress value="67" max="100"></progress>
        </label>

        <label class="mbsc-progress-danger">
            Danger
            <progress value="55" max="100"></progress>
        </label>

        <label class="mbsc-progress-warning">
            Warning
            <progress value="33" max="100"></progress>
        </label>

        <label class="mbsc-progress-info">
            Info
            <progress value="86" max="100"></progress>
        </label>
    </div>
</div>

Forms - Rating

Change demo
Rating examples with stars, supporting icons, fractional values, custom ranges and colors. For desktop & mobile.
// Use the settings object to change the theme
mobiscroll.settings = {
    lang: '',
    theme: ''
};
<div mbsc-form>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Rating</div>
        <label>
            Star rating
            <input data-role="rating" />
        </label>
        <label>
            Icons
            <input data-role="rating" data-empty="heart2" data-filled="heart" value="3" />
        </label>
        <label>
            Half steps
            <input data-role="rating" step=".5" min="0" max="3" value="1.5" />
        </label>
        <label>
           Value
            <input data-role="rating" data-val="right" max="6" value="4" data-template="{value}/{max}" />
        </label>
        <label>
            Disabled
            <input data-role="rating" disabled />
        </label>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Rating colors</div>
        <label class="mbsc-rating-primary">
            Primary
            <input data-role="rating" data-role="rating" />
        </label>
        <label class="mbsc-rating-secondary">
            Secondary 
            <input data-role="rating" data-role="rating" />
        </label>
        <label class="mbsc-rating-success">
            Success 
            <input data-role="rating" data-role="rating" />
        </label>
        <label class="mbsc-rating-danger">
            Danger 
            <input data-role="rating" data-role="rating" />
        </label>
        <label class="mbsc-rating-warning">
            Warning 
            <input data-role="rating" data-role="rating" />
        </label>
        <label class="mbsc-rating-info">
            Info 
            <input data-role="rating" data-role="rating" />
        </label>
    </div>
</div>

Forms - Segmented

Change demo
Segmented control with single & multiple select for radio buttons and checklists. It supports icons, text, colors.
mobiscroll.settings = {
    lang: '',
    theme: ''
};
<div mbsc-form>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Single select</div>
        <label>
            Day
            <input type="radio" data-role="segmented" name="range">
        </label>
        <label>
            Week
            <input type="radio" data-role="segmented" name="range">
        </label>
        <label>
            Month
            <input type="radio" data-role="segmented" name="range">
        </label>
        <label>
            Year
            <input type="radio" 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" checked>
        </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 class="mbsc-form-group">
        <div class="mbsc-form-group-title">Segmented colors</div>
        <label class="mbsc-segmented-primary">
            Desktop
            <input type="radio" data-role="segmented" data-icon="home" name="group-primary" checked>
        </label>
        <label class="mbsc-segmented-primary">
            Mobile
            <input type="radio" data-role="segmented" data-icon="mobile" name="group-primary">
        </label>
        <label class="mbsc-segmented-primary">
            Cloud
            <input type="radio" data-role="segmented" data-icon="cloud-upload" name="group-primary">
        </label>

        <label class="mbsc-segmented-secondary">
            Desktop
            <input type="radio" data-role="segmented" data-icon="home" name="group-secondary" checked>
        </label>
        <label class="mbsc-segmented-secondary">
            Mobile
            <input type="radio" data-role="segmented" data-icon="mobile" name="group-secondary">
        </label>
        <label class="mbsc-segmented-secondary">
            Cloud
            <input type="radio" data-role="segmented" data-icon="cloud-upload" name="group-secondary">
        </label>

        <label class="mbsc-segmented-success">
            Desktop
            <input type="radio" data-role="segmented" data-icon="home" name="group-success" checked>
        </label>
        <label class="mbsc-segmented-success">
            Mobile
            <input type="radio" data-role="segmented" data-icon="mobile" name="group-success">
        </label>
        <label class="mbsc-segmented-success">
            Cloud
            <input type="radio" data-role="segmented" data-icon="cloud-upload" name="group-success">
        </label>

        <label class="mbsc-segmented-danger">
            Desktop
            <input type="radio" data-role="segmented" data-icon="home" name="group-danger">
        </label>
        <label class="mbsc-segmented-danger">
            Mobile
            <input type="radio" data-role="segmented" data-icon="mobile" name="group-danger" checked>
        </label>
        <label class="mbsc-segmented-danger">
            Cloud
            <input type="radio" data-role="segmented" data-icon="cloud-upload" name="group-danger">
        </label>

        <label class="mbsc-segmented-warning">
            Desktop
            <input type="radio" data-role="segmented" data-icon="home" name="group-warning">
        </label>
        <label class="mbsc-segmented-warning">
            Mobile
            <input type="radio" data-role="segmented" data-icon="mobile" name="group-warning" checked>
        </label>
        <label class="mbsc-segmented-warning">
            Cloud
            <input type="radio" data-role="segmented" data-icon="cloud-upload" name="group-warning">
        </label>

        <label class="mbsc-segmented-info">
            Desktop
            <input type="radio" data-role="segmented" data-icon="home" name="group-info">
        </label>
        <label class="mbsc-segmented-info">
            Mobile
            <input type="radio" data-role="segmented" data-icon="mobile" name="group-info" checked>
        </label>
        <label class="mbsc-segmented-info">
            Cloud
            <input type="radio" data-role="segmented" data-icon="cloud-upload" name="group-info">
        </label>
    </div>
</div>

Forms - Date Slider

Change demo
Slider demo as a date picker. Use this for picking the day of week where simplicity is essential.
$(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: '',
        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 - Log in

Change demo
Login form with email and password fields, forgot password link and framework specific validation.
// 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" 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 - Checklist

Change demo
Checklist demo with icon and description. Grouping and multiple color presets are supported.
mobiscroll.settings = {
    lang: '',
    theme: ''
};
<div class="md-food-cl" 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 - Wishlist

Change 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="https://img.mobiscroll.com/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

Change demo
Signup and register form with name, email and password fields, featuring framework specific validation.
// 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" 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

Change demo
Signup screen with name, email and password and phone number fields.
// Use the settings object to change the theme
mobiscroll.settings = {
    lang: '',
    theme: ''
};
<div id="demo" class="md-create-account" 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>
        </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

Change demo
Alert, confirm and prompt dialogs for giving feedback to users and for quick & focused data entry.
mobiscroll.settings = {
    theme: '',
    lang: ''
};

$(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" 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

Change demo
Notification examples of toast and snackbar with or w/o action. With undo, retry or custom functionality.
mobiscroll.settings = {
    theme: ''
};

$(function () {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

});
<div mbsc-form>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Toast</div>
        <div class="mbsc-btn-group-block">
            <button id="md-toast-bottom">Bottom toast</button>
            <button id="md-toast-top">Top toast</button>
            <button id="md-toast-primary">Primary toast</button>
            <button id="md-toast-secondary">Secondary toast</button>
            <button id="md-toast-success">Success toast</button>
            <button id="md-toast-danger">Danger toast</button>
            <button id="md-toast-warning">Warning toast</button>
            <button id="md-toast-info">Info toast</button>
        </div>
    </div>
    <div class="mbsc-form-group">
        <div class="mbsc-form-group-title">Snackbar</div>
        <div class="mbsc-btn-group-block">
            <button id="md-snackbar-bottom">Bottom snackbar</button>
            <button id="md-snackbar-top">Top snackbar</button>
            <button id="md-snackbar-action">Snackbar with action</button>
            <button id="md-snackbar-primary">Primary snackbar</button>
            <button id="md-snackbar-secondary">Secondary snackbar</button>
            <button id="md-snackbar-success">Success snackbar</button>
            <button id="md-snackbar-danger">Danger snackbar</button>
            <button id="md-snackbar-warning">Warning snackbar</button>
            <button id="md-snackbar-info">Info snackbar</button>
        </div>
    </div>
</div>

Forms - Note

Change demo
Note examples for showing users inline messages with different importance indicators. Supports color presets.
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>

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

Component license


Purchase component licenses if you are looking for specific funcionality.

Total


All features will be included with the license.

Buy component license

Framework license


Get all 35 components, including with the Framework license.



Mobiscroll for JQuery $395


Use Javascript when building with plain and simple JS. Use jQuery when you have jQuery already included or if you are building with jQuery Mobile. Use AngularJS when building with Angular 1.x or Ionic 1. Use Angular when building with Angular 2/4/5/6 or Ionic 2/3/4. Use it when you are building your app or website with React.


Buy framework license
See other licensing options

Framework license


Get all 35 components, including with the Framework license.



Mobiscroll for JQuery $395


  • Use it when building with plain and simple JS
  • Compatible with vanilla JS app or frameworks like Vue
  • Royalty-free commercial usage
  • Technical support is included with the license
  • Use it with jQuery and jQuery Mobile
  • Enjoy the familiar API if you already use jQuery
  • Royalty-free commercial usage
  • Technical support is included with the license
  • Use it with Angular JS and Ionic 1
  • For web and mobile apps based on Angular 1.x
  • Royalty-free commercial usage
  • Technical support is included with the license
  • Use it with Angular 2/4/5/6 and Ionic 2/3/4
  • Visual Studio and VS Code integration
  • Royalty-free commercial usage
  • Technical support is included with the license
  • Use it when building with React JS
  • Collection of UI components for web and mobile
  • Royalty-free commercial usage
  • Technical support is included with the license
Buy framework license
See other licensing options

Framework license


Select the development framework you are using. Get all 35 components with the license.

Mobiscroll for Javascript
Mobiscroll for jQuery
Mobiscroll for React
Mobiscroll for Angular
Mobiscroll for Angular JS
  • Use it when building with plain and simple JS
  • Compatible with vanilla JS app or frameworks like Vue
  • Royalty-free commercial usage
  • Technical support is included with the license
  • Use it with jQuery and jQuery Mobile
  • Enjoy the familiar API if you already use jQuery
  • Royalty-free commercial usage
  • Technical support is included with the license
  • Use it with Angular JS and Ionic 1
  • For web and mobile apps based on Angular 1.x
  • Royalty-free commercial usage
  • Technical support is included with the license
  • Use it with Angular 2/4/5/6 and Ionic 2/3/4
  • Visual Studio and VS Code integration
  • Royalty-free commercial usage
  • Technical support is included with the license
  • Use it when building with React JS
  • Collection of UI components for web and mobile
  • Royalty-free commercial usage
  • Technical support is included with the license
Buy framework license
See other licensing options

Select the framework you are interested in

Javascript
jQuery
Angular
Angular JS
React

Use Javascript when building with plain and simple JS.

Use jQuery when you have jQuery already included or if you are building with jQuery Mobile.

Use AngularJS when building with Angular 1.x or Ionic 1.

Use Angular when building with Angular 2/4/5/6 or Ionic 2/3/4.

Use it when you are building your app or website with React.

Do you need additional support seats?

The framework license comes with one support seat. ( +$50/seat )

Add the source code?

Price
Buy now
Customize & try demos locally
Sign in or start your free 30 day trial

What framework are you using?

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

Customize & try demos locally
Sign in or start your free 30 day trial

We have to set you up with a trial for this to run 👍

Select a framework
Email address

Customize & try demos locally
You can download and use Mobiscroll Forms for Free

What framework are you using?

Javascript
jQuery
AngularJS
Angular
Ionic
React
Other
Select a framework
Install demo in your app
Follow this quick, two minute install guide
Close window

Step 1.Install the Mobiscroll CLI from npm

Copy command
$ npm install -g @mobiscroll/cli

The Mobiscroll CLI makes configuring your apps super simple 👍

Step 2.Run the following command in the root folder of your Ionic project

Copy command
$ mobiscroll config ionic
$ mobiscroll config ionic --lite

If your app is using lazy loading, add --lazy.

You will be prompted to log in with your mobiscroll account. Set your password here

Create a starter app with the CLI

$ mobiscroll start ionic myStarter

Step 3.Copy the code into your app. HTML goes into the markup, TS into Typescript.

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

You are setting a password for the account

New Password Required Enter at least 6 characters
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.

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 demo is using an in-browser TypeScript transpiler app as its base. Extract the zip file and open the index.html on your local dev server.

You can also 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

The demos are using Babel's in-browser ES6 and JSX transformer.

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


Let us know if we can help and enjoy!

Demos
Components
Calendar 20
Cards 10
Color 9
Date & Time 14
Event Calendar 16
Forms 21
Image 6
Listview 17
Measurement 10
Navigation 7
Number 7
Numpad 12
Option List 4
Range 17
Scroller 6
Scrollview 5
Select 13
Styling 4
Timer 5
Timespan 6
Treelist 6
Widget 10
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