Skip to content

AutoComplete

Rules

Basic Example

js
const rule = {
    type: "autoComplete",
    title: "Auto Complete",
    field: "auto",
    value: "xaboy",
    inject: true,
    props: {}
}

Props Configuration Examples

Static Options

js
const rule = {
    type: "autoComplete",
    title: "Product Name",
    field: "product",
    value: "",
    props: {
        data: [
            { value: "iPhone 15 Pro" },
            { value: "MacBook Pro" },
            { value: "iPad Air" },
            { value: "AirPods Pro" },
        ],
        placeholder: "Enter or select product",
    }
}
js
const rule = {
    type: "autoComplete",
    title: "Search Products",
    field: "keyword",
    value: "",
    props: {
        data: [],
        placeholder: "Enter product name",
    },
    inject: true,
    on: {
        search: ($inject, value) => {
            if (value && value.length >= 2) {
                // Call search API
                searchProducts(value).then(res => {
                    $inject.api.updateRule('keyword', {
                        props: {
                            data: res.data.map(item => ({ value: item.name }))
                        }
                    });
                });
            }
        },
    },
}

Events Examples

Handle Input and Selection

js
const rule = {
    type: "autoComplete",
    title: "Product Name",
    field: "product",
    value: "",
    props: {
        data: [
            { value: "iPhone 15 Pro" },
            { value: "MacBook Pro" },
        ],
        placeholder: "Enter or select product",
    },
    on: {
        change: (value) => {
            console.log('Input value changed:', value);
        },
        select: (value) => {
            console.log('Option selected:', value);
        },
        search: (value) => {
            console.log('Search value:', value);
        },
    },
}

Linkage Update After Selection

js
const rule = [
    {
        type: "autoComplete",
        title: "Product Name",
        field: "product",
        value: "",
        props: {
            data: [],
            placeholder: "Enter or select product",
        },
        inject: true,
        on: {
            select: ($inject, value) => {
                // Auto-fill product info from selection
                getProductInfo(value).then(res => {
                    $inject.api.setValue('price', res.data.price);
                    $inject.api.setValue('stock', res.data.stock);
                });
            },
        },
    },
    {
        type: "input-number",
        field: "price",
        title: "Price",
        props: {
            disabled: true,
        },
    },
    {
        type: "input-number",
        field: "stock",
        title: "Stock",
        props: {
            disabled: true,
        },
    },
]

Complete configuration items: arco-design_AutoComplete

value: String

Props

ParameterDescriptionTypeDefaultVersion
disabledWhether disabledbooleanfalse
dataData for auto-completionOption[][]
popup-containerMount container for popupstring | HTMLElement | null | undefined-
strictWhether in strict validation modebooleanfalse
filter-optionCustom option filter methodFilterOptiontrue
trigger-propsTrigger component propertiesobject-2.14.0

Events

Event NameDescriptionParameters
changeTriggered when bound value changesvalue: string
searchTriggered when user searchesvalue: string
selectTriggered when option is selectedvalue: string

FormCreate is an open-source project released under the MIT License. Free for personal and commercial use.