Text inputs
Input fields with options
Basic text field

A simple example of using Alpaca with nothing more than a string of text. Alpaca looks at your data and determines that it is a string. It then looks for a suitable candidate for representing a string and it decides to use the text field.

Show source code
// Basic text input
$("#alpaca-basic").alpaca({
    data: "I Love Alpaca Ice Cream!",
    options: {
        focus: false
    }
});
JavaScript
Display only view

Displays a text field using a display-only view. The text field simply prints out and is not editable, a simple block appears instead. This is a default form control type provided by Bootstrap framework.

I Love Alpaca Ice Cream!
Show source code
// Display only view
$("#alpaca-static").alpaca({
    data: "I Love Alpaca Ice Cream!",
    schema: {
        type: "string"
    },
    view: "bootstrap-display"
});
JavaScript
Label for text input

In this example text input field has label. By default appears on top left and uses default Bootstrap styles, including contetual alternatives. To add text label to any input field, use label option inside set of configuration options.

Show source code
// Text input label
$("#alpaca-input-label").alpaca({
    data: "I Love Alpaca Ice Cream!",
    options: {
        label: "Input label",
        focus: false
    }
});
JavaScript
Label for static input

In this example static input field has label. By default appears on top left and uses default Bootstrap styles, including contetual alternatives. To add text label to any input field, use label option inside set of configuration options.

I Love Alpaca Ice Cream!
Show source code
// Static input label
$("#alpaca-static-label").alpaca({
    data: "I Love Alpaca Ice Cream!",
    schema: {
        type: "string"
    },
    options: {
        label: "Input label"
    },
    view: "bootstrap-display"
});
JavaScript
Validation

A more developed example that specifies not only the data but also the schema, options and some basic input validation. In this example text field is limited to minimum 3 characters and maximum 5 characters. Try to change default input value.

Your favorite ice cream?

Show source code
// Validation
$("#alpaca-validation").alpaca({
    data: "Mint",
    schema: {
        minLength: 3,
        maxLength: 5
    },
    options: {
        label: "Ice Cream",
        helper: "Your favorite ice cream?",
        size: 30,
        focus: false
    }
});
JavaScript
Predefined value

In this example, we intentionally set the data to something that is invalid. The schema specifies that the maximum length of the allowed value is 8 characters. Our value exceeds that and so we receive a message straight away indicating this problem.

Please tell us the kind of ice cream you love most!

 This field should contain at most 5 numbers or characters
Show source code
// Predefined value
$("#alpaca-validation-predefined").alpaca({
    data: "Mint Chocolate",
    schema: {
        minLength: 3,
        maxLength: 5
    },
    options: {
        label: "Ice Cream",
        helper: "Please tell us the kind of ice cream you love most!",
        size: 30,
        focus: false,
        placeholder: "Enter an ice cream flavor"
    }
});
JavaScript
Disallow empty spaces

A text with field with disallowEmptySpaces set to true. This prevents the entry of spaces - it doesn't react on pressing space key. This is useful for things like username entry fields, as configured below.

Type something with empty space

Show source code
// Disallow empty spaces
$("#alpaca-disallow-empty").alpaca({
    schema: {
        type: "string"
    },
    options: {
        type: "lowercase",
        label: "User Name",
        disallowEmptySpaces: true,
        helper: "Type something with empty space",
        focus: false
    }
});
JavaScript
Disallow values

In this example we've added a few predefined values, that are not allowed by default. Just place values you want to disallow into disallow option, this will enable input field validation. Try to change input field value to see it in action.

 Mickey Mantle, Mickey are disallowed values.
Show source code
// Disallow values
$("#alpaca-disallow-values").alpaca({
    data: "Mickey Mantle",
    schema: {
        type: "string",
        disallow: ["Mickey Mantle", "Mickey"]
    },
    options: {
        label: "Name",
        focus: false
    }
});
JavaScript
Typeahead integration

This example uses $.typeahead auto-completion with a function to provide lookup values. The config block defines the first argument into the typeahead plugin. The datasets block defines the second argument into the typeahead plugin.

Select the name of a computing company

Show source code
// Typeahead
$("#alpaca-typeahead").alpaca({
    schema: {
        type: "string"
    },
    options: {
        type: "text",
        label: "Company Name",
        helper: "Select the name of a computing company",
        placeholder: "Enter 'a'",
        focus: false,
        typeahead: {
            config: {
                highlight: true,
                hint: true,
                minLength: 1
            },
            datasets: {
                type: "local",
                displayKey: 'value',
                source: ["Google", "Amazon", "Microsoft", "Apple", "Spotify", "Alpaca", "Another company", "Facebook"]
            }
        }
    }
});
JavaScript
Maxlength integration

This example constrains the entered text value, forcing it to be at minimum 3 and at most 25. This not only runs validation checks but also enforces some UI behavior. This also shows how many characters are left for maxLength as you type.

You have 10 characters remaining

Show source code
// Maxlength
$("#alpaca-maxlength").alpaca({
    schema: {
        type: "string",
        minLength: 3,
        maxLength: 25
    },
    options: {
        type: "text",
        label: "What is your name?",
        constrainMaxLength: true,
        constrainMinLength: true,
        showMaxLengthIndicator: true,
        focus: false
    },
    data: "Jackie Robinson"
});
JavaScript
Textarea type
Basic examples of textarea
Basic textarea

The following example demonstrates a simple textarea field with a string of text. Textarea type supports almost all available options for text inputs and also includes basic textarea attributes, such as columns and rows.

Receipt for Best Homemade Ice Cream

Show source code
// Basic textarea
$("#alpaca-textarea").alpaca({
    data: "Ice cream or ice-cream...",
    options: {
        type: "textarea",
        label: "Receipt",
        helper: "Receipt for Best Homemade Ice Cream",
        rows: 4,
        cols: 80,
        focus: false
    }
});
JavaScript
With placeholder

The following example uses the placeholder option to set up the placeholder text for a text area field. This basic option is available in all input types: text, number, search, url, email, textarea etc.

Receipt for Best Homemade Ice Cream

Show source code
// With placeholder
$("#alpaca-textarea-placeholder").alpaca({
    options: {
        type: "textarea",
        label: "Receipt",
        helper: "Receipt for Best Homemade Ice Cream",
        placeholder: "Enter your favorite ice cream here...",
        rows: 4,
        cols: 80,
        focus: false
    }
});
JavaScript
View mode

In the following example textarea field is rendered in display-only mode, which means textarea is replaced with div block and can't be editable. To set a view only mode, use bootstrap-displayoption added to view option.

Ice cream or ice-cream is a frozen dessert usually made from dairy products, such as milk and cream, and often combined with fruits or other ingredients and flavours.

Show source code
// View mode
$("#alpaca-textarea-static").alpaca({
    data: "Ice cream or ice-cream...",
    options: {
        type: "textarea",
        label: "Receipt",
        rows: 6,
        cols: 80,
        focus: false
    },
    view: "bootstrap-display"
});
JavaScript
Single field render

The following example overrides the view property on the field to have just the single field render in an alternate, display-only view. To make it short - view property here is placed inside options property.

My name is Dr. Jacobian and I am a neuroscientist from the Cornell University. I've perfected a DNA transcription process which makes it possible for the first time to use DNA nucleotides to store pedabytes of information in real-time.

Show source code
// Single field render
$("#alpaca-textarea-override").alpaca({
    data: "My name is Dr. Jacobian and I am a neuroscientist...",
    schema: {
        type: "string"
    },
    options: {
        type: "textarea",
        label: "Tell us about yourself",
        view: "bootstrap-display"
    }
});
JavaScript
Select menus
Basic selects, Multiselect and Select2
Basic select

Select field with data, options and schema parameters. As default, a select field will be rendered if schema enum property has more than 3 options. The sort order for enumerated values and their text are assumed to be alphanumeric.

What flavor of ice cream do you prefer?

Show source code
// Basic select
$("#alpaca-select").alpaca({
    data: "coffee",
    schema: {
        enum: ["vanilla", "chocolate", "coffee", "strawberry", "mint"]
    },
    options: {
        label: "Ice cream",
        helper: "What flavor of ice cream do you prefer?",
        focus: false
    }
});
JavaScript
External data source

Select field with external data source using dataSource option. If a string, it is considered to be a URI to a service that produces a object containing key/value pairs or an array of elements. Function needs to produce the same list.

Guess my favorite ice cream?

Show source code
// External data source
$("#alpaca-select-external").alpaca({
    options: {
        label: "Ice cream",
        helper: "Guess my favorite ice cream?",
        type: "select",
        focus: false,
        dataSource: "../../../../global_assets/demo_data/alpaca/selects.json"
    }
});
JavaScript
Basic multiselect

The following example demonstrates select menu with multiple select option, based on Bootstrap Multiselect plugin. Default multiselect doesn't provide styled checkboxes, so we are using Uniform plugin for custom look.

Guess my favorite ice cream?

Show source code
// Multiselect
$("#alpaca-multiselect").alpaca({
    data: ["Vanilla", "Chocolate"],
    schema: {
        type: "array",
        items: {
            title: "Ice Cream",
            type: "string",
            enum: ["Vanilla", "Chocolate", "Strawberry", "Mint"],
            minItems: 2,
            maxItems: 3
        }
    },
    options: {
        label: "Ice cream",
        helper: "Guess my favorite ice cream?",
        type: "select",
        size: 5,
        id: "multiselect",
        focus: false
    },
    postRender: function(control) {
        $("#multiselect").parent().find("input[type=checkbox]").uniform();
    }
});
JavaScript
Multiselect data source

Select field with external data source using dataSource option. If a string, it is considered to be a URI to a service that produces a object containing key/value pairs or an array of elements. Function needs to produce the same list.

Guess my favorite ice cream?

Show source code
// Multiselect with remote data
$("#alpaca-multiselect-remote").alpaca({
    options: {
        label: "Select your favorite flavor of ice cream",
        type: "select",
        multiple: true,
        helper: "Guess my favorite ice cream?",
        size: 3,
        focus: false,
        id: "multiselect-remote",
        dataSource: "../../../../global_assets/demo_data/alpaca/selects.json"
    },
    postRender: function(control) {
        $("#multiselect-remote").parent().find("input[type=checkbox]").uniform();
    }
});
JavaScript
Select2 basic

The following example demonstrates default implementation of Select2 library - here we need to specify select ID first, then initialize Select2 plugin using that ID selector. This is a custom integration, which is not supported in Alpaca by default.

What flavor of ice cream do you prefer?

Show source code
// Select2 select
$("#alpaca-select2").alpaca({
    data: "coffee",
    schema: {
        enum: ["vanilla", "chocolate", "coffee", "strawberry", "mint"]
    },
    options: {
        label: "Ice cream",
        helper: "What flavor of ice cream do you prefer?",
        id: "select2-basic",
        focus: false
    },
    postRender: function(control) {
        $('#select2-basic').select2({
            minimumResultsForSearch: Infinity
        });
    }
});
JavaScript
Select2 with search

The following example demonstrates Select2 select with search field - here we need to specify select ID first, then initialize Select2 plugin using that ID selector. This is a custom integration, which is not supported in Alpaca by default.

Show source code
// Select2 select with search
$("#alpaca-select2-search").alpaca({
    data: "coffee",
    schema: {
        enum: ["vanilla", "chocolate", "coffee", "strawberry", "mint"]
    },
    options: {
        label: "Ice cream",
        helper: "What flavor of ice cream do you prefer?",
        id: "select2-search",
        focus: false
    },
    postRender: function(control) {
        $('#select2-search').select2();
    }
});
JavaScript