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

Forms - Text Fields

Choose demo
// 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

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 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

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 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

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 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

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 - Validation

Choose demo
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')
            }
        }
    });

});
<form id="demo" style="display:none" 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>
</form>

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 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

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

$(function () {

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

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

});
<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 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

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 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

Choose demo
// Use the settings object to change the theme
mobiscroll.settings = {
    lang: '',
    theme: ''
};
<div style="display:none" 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

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

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 - 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 - 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 - 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: ''
};
<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>
        </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.

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 or Ionic 2/3. 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 and Ionic 2/3
  • 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 and Ionic 2/3
  • 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 or Ionic 2/3.

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
Please sign in or start a free trial to download

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
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 steps to install mobiscroll and use example
Close window

Step 1.

Install the Mobiscroll CLI from npm (skip this step if it's already installed).

Copy command
$ npm install -g @mobiscroll/cli

Step 2.

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

Copy command
$ mobiscroll config ionic
$ mobiscroll config ionic --lite
If your app is using lazy loading, add --lite --lazy and for Ionic Pro add --pro to the command.

Step 3.

Copy the code into your app.
The HTML goes into the markup, the Typescript into the TS file and the CSS into the page stylesheet (scss file).

Copy TS
Copy HTML
Copy CSS

Run ionic serve in the root folder of your app.

Copy command
$ ionic serve

Looking for an already configured app? Download kitchen sink for Ionic

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 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.

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

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
Controls
Calendar 18
Cards 10
Color 8
Date & Time 12
Event Calendar 15
Forms 21
Image 5
Listview 19
Measurement 9
Navigation 7
Number 6
Numpad 12
Option List 4
Range 15
Scroller 5
Scrollview 4
Select 11
Styling 4
Timer 4
Timespan 5
Treelist 5
Widget 8
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