Skip to content

Input 输入框

通过鼠标或键盘输入字符,支持多种输入类型、可清空、密码显示切换、字数统计等功能。

引入

html
<script type="module">
  import "./node_modules/easy-component-ui/dist/components/ea-input.js";
</script>
js
import "easy-component-ui/ea-input";

自定义样式

移步到 CSS PartCSS Custom Properties

基础用法

查看代码
html
<ea-input style="width: 240px" placeholder="Please input"></ea-input>

标签

通过 label 属性设置输入框的标签文本。

查看代码
html
<ea-input
  style="width: 240px"
  label="用户名"
  placeholder="Please input"
></ea-input>

禁用状态

通过 disabled 属性指定是否禁用 input 组件。

查看代码
html
<ea-input style="width: 240px" disabled placeholder="Please input"></ea-input>

可清空

使用 clearable 属性即可得到一个可一键清空的输入框。清空时会触发 ea-clear 事件。

查看代码
html
<ea-input
  id="clearableInput"
  style="width: 240px"
  placeholder="Please input"
  clearable
></ea-input>
js
const clearableInput = document.querySelector("#clearableInput");
clearableInput.addEventListener("ea-clear", e => {
  console.log("cleared, oldValue:", e.detail.oldValue);
});

自定义清除图标

你可以通过 clear-icon 属性自定义清除图标。

查看代码
html
<ea-input
  style="width: 240px"
  placeholder="Please input"
  clearable
  clear-icon="circle-xmark"
></ea-input>

密码框

使用 show-password 属性即可得到一个可切换显示密码的输入框。

查看代码
html
<ea-input
  style="width: 240px"
  type="password"
  placeholder="Please input password"
  show-password
></ea-input>

带 icon 的输入框

带 icon 的输入框示例,分为使用属性和使用插槽两种方式。

Using attributes

Using slots

查看代码
html
<div class="demo demo-input-with-icon">
  <div class="input-group">
    <p class="label">Using attributes</p>
    <div class="input-container">
      <ea-input
        class="responsive-input"
        placeholder="Pick a date"
        prefix-icon="mug-hot"
      ></ea-input>
      <ea-input
        class="responsive-input"
        placeholder="Type something"
        suffix-icon="mug-hot"
      ></ea-input>
    </div>
  </div>
  <div class="input-group">
    <p class="label">Using slots</p>
    <div class="input-container">
      <ea-input class="responsive-input" placeholder="Pick a date">
        <ea-icon name="magnifying-glass" slot="suffix"></ea-icon>
      </ea-input>
      <ea-input class="responsive-input" placeholder="Type something">
        <ea-icon name="magnifying-glass" slot="prefix"></ea-icon>
      </ea-input>
    </div>
  </div>
</div>

文本域

用于输入多行文本信息可缩放的输入框。添加 type="textarea" 属性来将 input 元素转换为原生的 textarea 元素。

文本域高度可通过 rows 属性控制。

查看代码
html
<ea-input
  style="width: 240px"
  rows="4"
  type="textarea"
  placeholder="Please input"
></ea-input>

自适应文本域

设置文字输入类型的 autosize 属性使得根据内容自动调整的高度。你可以通过 min-rowsmax-rows 属性限制自适应的行数范围。

查看代码
html
<ea-input
  style="width: 240px"
  rows="4"
  type="textarea"
  placeholder="Please input"
  autosize
></ea-input>
<ea-input
  style="width: 240px"
  type="textarea"
  placeholder="Please input"
  autosize
  min-rows="2"
  max-rows="4"
></ea-input>

复合型输入框

可以在输入框中前置或后置一个元素,通常是标签或按钮。

可通过 slot 来指定在 Input 中分发的前置或者后置的内容。

Http://
.com
Http://
查看代码
html
<ea-input style="max-width: 600px" placeholder="Please input">
  <div class="prepend" slot="prepend">Http://</div>
</ea-input>
<ea-input style="max-width: 600px" placeholder="Please input">
  <div class="append" slot="append">.com</div>
</ea-input>
<ea-input style="max-width: 600px" placeholder="Please input">
  <div class="prepend" slot="prepend">Http://</div>
  <div class="append" slot="append">
    <ea-icon name="magnifying-glass"></ea-icon>
  </div>
</ea-input>

字数统计

设置 show-word-limit 属性来显示字数统计,需要配合 maxlength 属性使用。

查看代码
html
<ea-input
  style="width: 240px"
  type="textarea"
  placeholder="Please input"
  maxlength="100"
  show-word-limit
></ea-input>

不同尺寸

通过 size 属性指定输入框的尺寸,除了默认的大小外,还提供了 large、small 两种尺寸。

查看代码
html
<ea-input style="width: 240px" size="large" placeholder="Large"></ea-input>
<ea-input style="width: 240px" size="default" placeholder="Default"></ea-input>
<ea-input style="width: 240px" size="small" placeholder="Small"></ea-input>

Input API

Input Attributes

参数说明类型可选值默认值
label标签文本String''
type输入框类型Stringtext / textarea / password / number / email / tel / url / search / date 等text
size输入框尺寸Stringlarge / default / smalldefault
value输入框值String''
placeholder占位符文本String''
maxlength最大输入长度Number
minlength最小输入长度Number
clearable是否可清空Booleanfalse
clear-icon清空图标名称Stringxmark
disabled是否禁用Booleanfalse
show-password是否显示密码切换Booleanfalse
prefix-icon前缀图标名称String''
suffix-icon后缀图标名称String''
show-word-limit是否显示字数统计Booleanfalse
rows文本域行数Number2
autosize是否自动调整高度Booleanfalse
min-rows自适应最小行数Number
max-rows自适应最大行数Number
resize文本域调整大小方式Stringnone / both / horizontal / verticalvertical
autocomplete自动完成设置Stringon / off 等off
name字段名称String''
readonly是否只读Booleanfalse
required是否必填Booleanfalse
max最大值(number 类型)Number
min最小值(number 类型)Number
step步长(number 类型)Number1
pattern正则表达式模式String
autofocus是否自动聚焦Booleanfalse
aria-labelARIA 标签String''
tabindexTab 索引String''
inputmode输入模式Stringnumeric / tel / url / email 等''

Input CSS Part

用法可参考 MDN ::part()伪类

名称说明
container容器元素
label标签元素
region区域元素
prepend前置内容元素
inner内部容器元素
prefix前缀元素
original-wrapper原始输入框包装器
original原始输入框
suffix后缀元素
clear-icon清除图标元素
show-password-icon显示密码图标元素
suffix-icon后缀图标元素
count字数统计元素
append后置内容元素

Input Slots

名称说明
prepend前置内容插槽
prefix前缀图标插槽
suffix后缀图标插槽
append后置内容插槽

Input Methods

方法名说明参数
focus使 input 获取焦点options?: FocusOptions
blur使 input 失去焦点
select选中 input 中的文字
setRangeText替换指定范围的文本replacement: string, start: number, end: number, selectMode?: 'select' | 'start' | 'end' | 'preserve'
setSelectionRange设置选区的起止位置(从 0 开始)selectionStart: number, selectionEnd: number, selectionDirection?: 'forward' | 'backward' | 'none'
showPicker显示浏览器内置选择器(仅当浏览器支持该输入类型时有效)
stepDown将数值类型输入框的值减少一个步长n?: number
stepUp将数值类型输入框的值增加一个步长n?: number
clear清空输入框内容
checkValidity检查表单字段的有效性
reportValidity报告表单字段的有效性(显示验证提示)
setCustomValidity设置自定义验证错误消息message: string

Input Events

事件名说明回调参数 (event.detail)
input输入值变化时触发{ value: string }
change值提交变化时触发{ value: string }
ea-clear清空输入框时触发{ oldValue: string }
focus获得焦点时触发
blur失去焦点时触发

Input CSS Custom Properties

属性名说明默认值
--ea-input-height输入框高度var(--ea-input-height-md)
--ea-input-font-size输入框字体大小var(--ea-input-font-size-md)
--ea-input-border-color输入框边框颜色var(--color-border)
--ea-input-border-focus-color输入框聚焦边框颜色var(--blue-400)
--ea-input-border-invalid-color输入框无效边框颜色var(--red-500)
--ea-input-border-radius输入框圆角var(--border-radius-sm)
--ea-input-padding输入框内边距0 var(--spacing-md)
--ea-input-text-color输入框文字颜色var(--grey-700)
--ea-input-transition过渡动画时长var(--transition-fast)
--ea-input-icon-color图标颜色var(--grey-500)
--ea-input-resize文本域调整大小方式vertical