ion-input
The input component is a wrapper to the HTML input element with custom styling and additional functionality. It accepts most of the same properties as the HTML input, but works great on desktop devices and integrates with the keyboard on mobile devices.
It is meant for text type
inputs only, such as "text"
, "password"
, "email"
, "number"
, "search"
, "tel"
, and "url"
. It supports all standard text input events including keyup, keydown, keypress, and more.
Usage
- Angular
- Javascript
- React
- Stencil
- Vue
<!-- Default Input -->
<ion-input></ion-input>
<!-- Input with value -->
<ion-input value="custom"></ion-input>
<!-- Input with placeholder -->
<ion-input placeholder="Enter Input"></ion-input>
<!-- Input with clear button when there is a value -->
<ion-input clearInput value="clear me"></ion-input>
<!-- Number type input -->
<ion-input type="number" value="333"></ion-input>
<!-- Disabled input -->
<ion-input value="Disabled" disabled></ion-input>
<!-- Readonly input -->
<ion-input value="Readonly" readonly></ion-input>
<!-- Inputs with labels -->
<ion-item>
<ion-label>Default Label</ion-label>
<ion-input></ion-input>
</ion-item>
<ion-item>
<ion-label position="floating">Floating Label</ion-label>
<ion-input></ion-input>
</ion-item>
<ion-item>
<ion-label position="fixed">Fixed Label</ion-label>
<ion-input></ion-input>
</ion-item>
<ion-item>
<ion-label position="stacked">Stacked Label</ion-label>
<ion-input></ion-input>
</ion-item>
<!-- Default Input -->
<ion-input></ion-input>
<!-- Input with value -->
<ion-input value="custom"></ion-input>
<!-- Input with placeholder -->
<ion-input placeholder="Enter Input"></ion-input>
<!-- Input with clear button when there is a value -->
<ion-input clear-input value="clear me"></ion-input>
<!-- Number type input -->
<ion-input type="number" value="333"></ion-input>
<!-- Disabled input -->
<ion-input value="Disabled" disabled></ion-input>
<!-- Readonly input -->
<ion-input value="Readonly" readonly></ion-input>
<!-- Inputs with labels -->
<ion-item>
<ion-label>Default Label</ion-label>
<ion-input></ion-input>
</ion-item>
<ion-item>
<ion-label position="floating">Floating Label</ion-label>
<ion-input></ion-input>
</ion-item>
<ion-item>
<ion-label position="fixed">Fixed Label</ion-label>
<ion-input></ion-input>
</ion-item>
<ion-item>
<ion-label position="stacked">Stacked Label</ion-label>
<ion-input></ion-input>
</ion-item>
import React, { useState } from 'react';
import {
IonContent,
IonHeader,
IonPage,
IonTitle,
IonToolbar,
IonInput,
IonItem,
IonLabel,
IonList,
IonItemDivider,
} from '@ionic/react';
export const InputExamples: React.FC = () => {
const [text, setText] = useState<string>();
const [number, setNumber] = useState<number>();
return (
<IonPage>
<IonHeader>
<IonToolbar>
<IonTitle>IonInput Examples</IonTitle>
</IonToolbar>
</IonHeader>
<IonContent>
<IonList>
<IonItemDivider>Default Input with Placeholder</IonItemDivider>
<IonItem>
<IonInput value={text} placeholder="Enter Input" onIonChange={(e) => setText(e.detail.value!)}></IonInput>
</IonItem>
<IonItemDivider>Input with clear button when there is a value</IonItemDivider>
<IonItem>
<IonInput
value={text}
placeholder="Enter Input"
onIonChange={(e) => setText(e.detail.value!)}
clearInput
></IonInput>
</IonItem>
<IonItemDivider>Number type input</IonItemDivider>
<IonItem>
<IonInput
type="number"
value={number}
placeholder="Enter Number"
onIonChange={(e) => setNumber(parseInt(e.detail.value!, 10))}
></IonInput>
</IonItem>
<IonItemDivider>Disabled input</IonItemDivider>
<IonItem>
<IonInput value={text} disabled></IonInput>
</IonItem>
<IonItemDivider>Readonly input</IonItemDivider>
<IonItem>
<IonInput value={text} readonly></IonInput>
</IonItem>
<IonItemDivider>Inputs with labels</IonItemDivider>
<IonItem>
<IonLabel>Default Label</IonLabel>
<IonInput></IonInput>
</IonItem>
<IonItem>
<IonLabel position="floating">Floating Label</IonLabel>
<IonInput value={text}></IonInput>
</IonItem>
<IonItem>
<IonLabel position="fixed">Fixed Label</IonLabel>
<IonInput value={text}></IonInput>
</IonItem>
<IonItem>
<IonLabel position="stacked">Stacked Label</IonLabel>
<IonInput value={text}> </IonInput>
</IonItem>
</IonList>
</IonContent>
</IonPage>
);
};
import { Component, h } from '@stencil/core';
@Component({
tag: 'input-example',
styleUrl: 'input-example.css',
})
export class InputExample {
render() {
return [
// Default Input
<ion-input></ion-input>,
// Input with value
<ion-input value="custom"></ion-input>,
// Input with placeholder
<ion-input placeholder="Enter Input"></ion-input>,
// Input with clear button when there is a value
<ion-input clearInput value="clear me"></ion-input>,
// Number type input
<ion-input type="number" value="333"></ion-input>,
// Disabled input
<ion-input value="Disabled" disabled></ion-input>,
// Readonly input
<ion-input value="Readonly" readonly></ion-input>,
// Inputs with labels
<ion-item>
<ion-label>Default Label</ion-label>
<ion-input></ion-input>
</ion-item>,
<ion-item>
<ion-label position="floating">Floating Label</ion-label>
<ion-input></ion-input>
</ion-item>,
<ion-item>
<ion-label position="fixed">Fixed Label</ion-label>
<ion-input></ion-input>
</ion-item>,
<ion-item>
<ion-label position="stacked">Stacked Label</ion-label>
<ion-input></ion-input>
</ion-item>,
];
}
}
<template>
<!-- Default Input -->
<ion-input></ion-input>
<!-- Input with value -->
<ion-input value="custom"></ion-input>
<!-- Input with placeholder -->
<ion-input placeholder="Enter Input"></ion-input>
<!-- Input with clear button when there is a value -->
<ion-input clear-input value="clear me"></ion-input>
<!-- Number type input -->
<ion-input type="number" value="333"></ion-input>
<!-- Disabled input -->
<ion-input value="Disabled" disabled></ion-input>
<!-- Readonly input -->
<ion-input value="Readonly" readonly></ion-input>
<!-- Inputs with labels -->
<ion-item>
<ion-label>Default Label</ion-label>
<ion-input></ion-input>
</ion-item>
<ion-item>
<ion-label position="floating">Floating Label</ion-label>
<ion-input></ion-input>
</ion-item>
<ion-item>
<ion-label position="fixed">Fixed Label</ion-label>
<ion-input></ion-input>
</ion-item>
<ion-item>
<ion-label position="stacked">Stacked Label</ion-label>
<ion-input></ion-input>
</ion-item>
</template>
<script>
import { IonLabel, IonInput, IonItem } from '@ionic/vue';
import { defineComponent } from 'vue';
export default defineComponent({
components: { IonLabel, IonInput, IonItem },
});
</script>
Properties
accept
Description | If the value of the type attribute is "file" , then this attribute will indicate the types of files that the server accepts, otherwise it will be ignored. The value must be a comma-separated list of unique content type specifiers. |
Attribute | accept |
Type | string | undefined |
Default | undefined |
autocapitalize
Description | Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user. Available options: "off" , "none" , "on" , "sentences" , "words" , "characters" . |
Attribute | autocapitalize |
Type | string |
Default | 'off' |
autocomplete
Description | コントロールの値が、ブラウザによって自動的に補完されるかどうかを示します。 |
Attribute | autocomplete |
Type | "on" | "off" | "name" | "honorific-prefix" | "given-name" | "additional-name" | "family-name" | "honorific-suffix" | "nickname" | "email" | "username" | "new-password" | "current-password" | "one-time-code" | "organization-title" | "organization" | "street-address" | "address-line1" | "address-line2" | "address-line3" | "address-level4" | "address-level3" | "address-level2" | "address-level1" | "country" | "country-name" | "postal-code" | "cc-name" | "cc-given-name" | "cc-additional-name" | "cc-family-name" | "cc-number" | "cc-exp" | "cc-exp-month" | "cc-exp-year" | "cc-csc" | "cc-type" | "transaction-currency" | "transaction-amount" | "language" | "bday" | "bday-day" | "bday-month" | "bday-year" | "sex" | "tel" | "tel-country-code" | "tel-national" | "tel-area-code" | "tel-local" | "tel-extension" | "impp" | "url" | "photo" |
Default | 'off' |
autocorrect
Description | ユーザーがテキスト値を入力/編集する際に、自動補正を有効にするかどうか。 |
Attribute | autocorrect |
Type | "off" | "on" |
Default | 'off' |
autofocus
Description | この Boolean 属性により、ページロード時にフォームコントロールにInputフォーカスが当たるように指定することができます。 |
Attribute | autofocus |
Type | boolean |
Default | false |
clearInput
Description | true の場合、値があるときにInputにクリアアイコンが表示されます。これをクリックすると、入力がクリアされます。 |
Attribute | clear-input |
Type | boolean |
Default | false |
clearOnEdit
Description | true の場合、編集時にフォーカスされた後、値がクリアされる。デフォルトは type が "password" のとき true で、それ以外のときは false です。 |
Attribute | clear-on-edit |
Type | boolean | undefined |
Default | undefined |
color
Description | The color to use from your application's color palette. Default options are: "primary" , "secondary" , "tertiary" , "success" , "warning" , "danger" , "light" , "medium" , and "dark" . For more information on colors, see theming. |
Attribute | color |
Type | string | undefined |
Default | undefined |
debounce
Description | キーを押すたびに ionChange イベントが発生するまでの待ち時間をミリ秒単位で設定します。これは ngModel や v-model などのフォームバインディングにも影響します。 |
Attribute | debounce |
Type | number |
Default | 0 |
disabled
Description | true の場合、ユーザはInputと対話することができません。 |
Attribute | disabled |
Type | boolean |
Default | false |
enterkeyhint
Description | A hint to the browser for which enter key to display. Possible values: "enter" , "done" , "go" , "next" , "previous" , "search" , and "send" . |
Attribute | enterkeyhint |
Type | "done" | "enter" | "go" | "next" | "previous" | "search" | "send" | undefined |
Default | undefined |
inputmode
Description | A hint to the browser for which keyboard to display. Possible values: "none" , "text" , "tel" , "url" , "email" , "numeric" , "decimal" , and "search" . |
Attribute | inputmode |
Type | "decimal" | "email" | "none" | "numeric" | "search" | "tel" | "text" | "url" | undefined |
Default | undefined |
max
Description | 最大値で、その最小値(min属性)より小さくてはなりません。 |
Attribute | max |
Type | string | undefined |
Default | undefined |
maxlength
Description | type属性の値が text , email , search , password , tel , または url の場合、この属性はユーザーが入力できる最大文字数を指定します。 |
Attribute | maxlength |
Type | number | undefined |
Default | undefined |
min
Description | 最小値で、その最大値(max属性)より大きくてはなりません。 |
Attribute | min |
Type | string | undefined |
Default | undefined |
minlength
Description | type属性の値が text , email , search , password , tel , または url の場合、この属性はユーザーが入力できる最小文字数を指定します。 |
Attribute | minlength |
Type | number | undefined |
Default | undefined |
mode
Description | modeは、どのプラットフォームのスタイルを使用するかを決定します。 |
Attribute | mode |
Type | "ios" | "md" |
Default | undefined |
multiple
Description | If true , the user can enter more than one value. This attribute applies when the type attribute is set to "email" or "file" , otherwise it is ignored. |
Attribute | multiple |
Type | boolean | undefined |
Default | undefined |
name
Description | フォームデータとともに送信されるコントロールの名前。 |
Attribute | name |
Type | string |
Default | this.inputId |
pattern
Description | 値をチェックするための正規表現。パターンは、部分的なものだけでなく、値全体にマッチする必要があります。title 属性を使って、ユーザーを助けるためにパターンを説明します。この属性は、type属性の値が "text" , "search" , "tel" , "url" , "email" , "date" , または "password" であるときに適用され、それ以外のときは無視されます。type 属性が "date" の場合、pattern は "date" Inputタイプをネイティブにサポートしないブラウザでのみ使用されます。詳しくは https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/date を参照してください。 |
Attribute | pattern |
Type | string | undefined |
Default | undefined |
placeholder
Description | 入力が値を持つ前に表示される指示文。 |
Attribute | placeholder |
Type | null | string | undefined |
Default | undefined |
readonly
Description | true の場合、ユーザーは値を変更することができません。 |
Attribute | readonly |
Type | boolean |
Default | false |
required
Description | true の場合、ユーザーはフォームを送信する前に値を入力する必要があります。 |
Attribute | required |
Type | boolean |
Default | false |
size
Description | コントロールの初期サイズ。ただし、type属性の値が "text" または "password" である場合は、整数値の文字数です。この属性は、type 属性が "text" , "search" , "tel" , "url" , "email" , または "password" に設定されている場合にのみ適用され、それ以外の場合は無視されます。 |
Attribute | size |
Type | number | undefined |
Default | undefined |
spellcheck
Description | true の場合、その要素のスペルチェックと文法チェックが行われる。 |
Attribute | spellcheck |
Type | boolean |
Default | false |
step
Description | Works with the min and max attributes to limit the increments at which a value can be set. Possible values are: "any" or a positive floating point number. |
Attribute | step |
Type | string | undefined |
Default | undefined |
type
Description | 表示するコントロールの種類を指定します。デフォルトのタイプはテキストです。 |
Attribute | type |
Type | "date" | "datetime-local" | "email" | "month" | "number" | "password" | "search" | "tel" | "text" | "time" | "url" | "week" |
Default | 'text' |
value
Description | 入力された値です。 |
Attribute | value |
Type | null | number | string | undefined |
Default | '' |
Events
Name | Description |
---|---|
ionBlur | Inputのフォーカスが外れたときに発行されます。 |
ionChange | 値が変更されたときに発行されます。 |
ionFocus | Inputにフォーカスが当たったときに発行されます。 |
ionInput | キーボード入力が発生したときに発行されます。 |
Methods
getInputElement
Description | 要素の内部で使用されているネイティブの <input> 要素を返します。 |
Signature | getInputElement() => Promise<HTMLInputElement> |
setFocus
Description | Sets focus on the native input in ion-input . Use this method instead of the global input.focus() . |
Signature | setFocus() => Promise<void> |
CSS Shadow Parts
No CSS shadow parts available for this component.
CSS Custom Properties
Name | Description |
---|---|
--background | Inputの背景 |
--color | Inputのテキストの色 |
--padding-bottom | InputのBottom Padding |
--padding-end | 入力の方向が左から右の場合はRight Padding、右から左の場合はLeft Paddingとなります。 |
--padding-start | 入力の方向が左から右の場合はLeft Padding、右から左の場合はRight Paddingとなります。 |
--padding-top | InputのTop Padding |
--placeholder-color | InputのPlaceholderテキストの色 |
--placeholder-font-style | InputのPlaceholderテキストのFont Style |
--placeholder-font-weight | InputのPlaceholderテキストのFont Weight |
--placeholder-opacity | InputのPlaceholderテキストの不透明度 |
Slots
No slots available for this component.