表单布局ui/form
import { VNode, render } from "ui/control";
import Form from "ui/form";
import { ListItem } from "ui/listBox";
import Select from "ui/select";
import TextBox from "ui/textBox";
import Button from "ui/button";
render(
__root__,
<Form class="x-form-h" method="GET" onValidate={()=>false}>
<div class="x-form-field">
<label class="x-form-label">账号名<span class="x-tip x-tip-error">*</span>:</label>
<div class="x-form-input"><TextBox name="uid" value="默认值"></TextBox></div>
<label class="x-form-label">身份证<span class="x-tip x-tip-error">*</span>:</label>
<div class="x-form-input"><TextBox name="cid" pattern={/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}(\d|x|X)$/}></TextBox></div>
</div>
<div class="x-form-field">
<label class="x-form-label">选择框<span class="x-tip x-tip-error">*</span>:</label>
<div class="x-form-input">
<Select name="sb" placeholder="请选择">
<ListItem>A</ListItem>
<ListItem>B</ListItem>
<ListItem>C</ListItem>
<ListItem>D</ListItem>
</Select>
</div>
<label class="x-form-label"></label>
<div class="x-form-input">
<Button type="submit" class="x-button-primary x-space"><i class="x-icon">🔍</i> 查询</Button>
<Button type="reset">重置</Button>
</div>
</div>
</Form>
)
水平布局
<form class="x-form" action="###">
<div class="x-form-field">
<label class="x-form-label">账号名<span class="x-tip x-tip-error">*</span>:</label>
<div class="x-form-input"><input type="text" class="x-textbox"></div>
<label class="x-form-label">账号<span class="x-tip x-tip-error">*</span>:</label>
<div class="x-form-input"><input type="text" class="x-textbox"></div>
<label class="x-form-label">账号<span class="x-tip x-tip-error">*</span>:</label>
<div class="x-form-input">
<input type="text" class="x-textbox"><br>
<input type="text" class="x-textbox">
</div>
</div>
<div class="x-form-field">
<label class="x-form-label">账号名字<span class="x-tip x-tip-error">*</span>:</label>
<div class="x-form-input">
<textarea class="x-textbox"></textarea>
</div>
<label class="x-form-label">账<span class="x-tip x-tip-error">*</span>:</label>
<div class="x-form-input"><input type="text" class="x-textbox"></div>
<label class="x-form-label">账<span class="x-tip x-tip-error">*</span>:</label>
<div class="x-form-input"><input type="text" class="x-textbox"></div>
</div>
<div class="x-form-field">
<label class="x-form-label"></label>
<div class="x-form-input"><input type="button" class="x-button" value="提交"></div>
</div>
</form>
<form class="x-form" action="###">
<div class="x-form-field">
<label class="x-form-label">账号名<span class="x-tip x-tip-error">*</span>:</label>
<div class="x-form-input">
<input type="text" class="x-textbox x-textbox-error">
<span class="x-tipbox x-tipbox-error">错误</span>
</div>
</div>
<div class="x-form-field">
<label class="x-form-label">验证码:</label>
<div class="x-form-input">
<input type="text" class="x-textbox" />
<a href="###"><img src="../../../assets/resources/100x100.png" height="34" /></a>
<a href="###">看不清,换一张</a>
</div>
</div>
<div class="x-form-field">
<label class="x-form-label"></label>
<div class="x-form-input">
<label><input type="checkbox" checked /> 同意<a href="###">用户协议</a></label>
</div>
</div>
<div class="x-form-field">
<label class="x-form-label"></label>
<div class="x-form-input">
<button type="submit" class="x-button">确定</button>
</div>
</div>
</form>
当在手机上,水平布局会自动改为垂直布局。
另参考 表单验证(validator)。
API
Form 类
继承自:Control
表示一个表单。
字段 | 类型 | 描述 | 继承自 |
---|---|---|---|
⮞
action
: string
表单的提交地址。 |
string
|
表单的提交地址。 |
— |
⮞
method
: string
表单的提交谓词。 |
string
|
表单的提交谓词。 |
— |
⮞
onChange
: (e: Event, sender: Form) => void
改变事件。 |
function
|
改变事件。 |
— |
⮞
async
: boolean
是否异步提交表单。 |
boolean
|
是否异步提交表单。 |
— |
⮞
noValidate
: boolean
是否禁用验证。 |
boolean
|
是否禁用验证。 |
— |
⮞
willValidate
: boolean
(只读)判断当前表单是否需要验证。 |
boolean
|
(只读)判断当前表单是否需要验证。 |
— |
⮞
data
: { [key: string]: any; }
提交的附加数据。 |
object
|
提交的附加数据。 |
— |
⮞
value
: { [x: string]: any; }
最终提交的数据。 |
object
|
最终提交的数据。 |
— |
⮞
inputs
: Input[]
(只读)当前表单内的所有输入域。 |
Input[]
|
(只读)当前表单内的所有输入域。 |
— |
⮞
disabled
: boolean
是否禁用。禁用后数据不会被提交到服务端。 |
boolean
|
是否禁用。禁用后数据不会被提交到服务端。 |
— |
⮞
readOnly
: boolean
是否只读。 |
boolean
|
是否只读。 |
— |
⮞
onValidate
: (r: FormValidityResult) => boolean | void | Promise<boolean>
验证表单事件。 |
function
|
验证表单事件。 |
— |
⮞
onSubmit
: (e: Event) => void
提交表单事件。 |
function
|
提交表单事件。 |
— |
⮞
elem
: HTMLFormElement
|
HTMLFormElement
|
(已覆盖)关联的元素。 |
Control |
⮞
readyState
: ControlState
|
ControlState
|
获取当前控件的渲染状态。 |
Control |
⮞
vNode
: VNode
|
VNode
|
(保护的)获取当前控件关联的虚拟节点。 |
Control |
⮞
sourceVNode
: VNode
|
VNode
|
获取创建该控件使用的源虚拟节点。 |
Control |
⮞
alwaysUpdate
: boolean
|
boolean
|
控件是否使用主动更新模式。 |
Control |
⮞
body
: HTMLElement
|
HTMLElement
|
(只读)获取用于包含子控件和节点的根元素。 |
Control |
⮞
duration
: number = 200
|
number
|
渐变的持续毫秒数。如果为 0 则不使用渐变。 |
Control |
⮞
class
: string
|
string
|
CSS 类名。 |
Control |
⮞
style
: string | { [key: string]: string | number; }
|
string | object
|
控件样式。 |
Control |
⮞
id
: string
|
string
|
控件序号。 |
Control |
⮞
content
: NodeLike
|
NodeLike
|
控件内容。 |
Control |
⮞
onSelectStart
: (e: Event, sender: Form) => void
|
function
|
选择开始事件。 |
Control |
⮞
onClick
: (e: MouseEvent, sender: Form) => void
|
function
|
点击事件。 |
Control |
⮞
onAuxClick
: (e: MouseEvent, sender: Form) => void
|
function
|
中键点击事件。 |
Control |
⮞
onDblClick
: (e: MouseEvent, sender: Form) => void
|
function
|
双击事件。 |
Control |
⮞
onContextMenu
: (e: PointerEvent, sender: Form) => void
|
function
|
右键菜单事件。 |
Control |
⮞
onMouseDown
: (e: MouseEvent, sender: Form) => void
|
function
|
鼠标按下事件。 |
Control |
⮞
onMouseUp
: (e: MouseEvent, sender: Form) => void
|
function
|
鼠标按上事件。 |
Control |
⮞
onMouseOver
: (e: MouseEvent, sender: Form) => void
|
function
|
鼠标移入事件。 |
Control |
⮞
onMouseOut
: (e: MouseEvent, sender: Form) => void
|
function
|
鼠标移开事件。 |
Control |
⮞
onMouseEnter
: (e: MouseEvent, sender: Form) => void
|
function
|
鼠标进入事件。 |
Control |
⮞
onMouseLeave
: (e: MouseEvent, sender: Form) => void
|
function
|
鼠标离开事件。 |
Control |
⮞
onMouseMove
: (e: MouseEvent, sender: Form) => void
|
function
|
鼠标移动事件。 |
Control |
⮞
onWheel
: (e: WheelEvent, sender: Form) => void
|
function
|
鼠标滚轮事件。 |
Control |
⮞
onScroll
: (e: UIEvent, sender: Form) => void
|
function
|
滚动事件。 |
Control |
⮞
onTouchStart
: (e: TouchEvent, sender: Form) => void
|
function
|
触摸开始事件。 |
Control |
⮞
onTouchMove
: (e: TouchEvent, sender: Form) => void
|
function
|
触摸移动事件。 |
Control |
⮞
onTouchEnd
: (e: TouchEvent, sender: Form) => void
|
function
|
触摸结束事件。 |
Control |
⮞
onTouchCancel
: (e: TouchEvent, sender: Form) => void
|
function
|
触摸撤销事件。 |
Control |
⮞
onPointerEnter
: (e: PointerEvent, sender: Form) => void
|
function
|
指针进入事件。 |
Control |
⮞
onPointerLeave
: (e: PointerEvent, sender: Form) => void
|
function
|
指针离开事件。 |
Control |
⮞
onPointerOver
: (e: PointerEvent, sender: Form) => void
|
function
|
指针移入事件。 |
Control |
⮞
onPointerOut
: (e: PointerEvent, sender: Form) => void
|
function
|
指针移开事件。 |
Control |
⮞
onPointerDown
: (e: PointerEvent, sender: Form) => void
|
function
|
指针按下事件。 |
Control |
⮞
onPointerMove
: (e: PointerEvent, sender: Form) => void
|
function
|
指针移动事件。 |
Control |
⮞
onPointerUp
: (e: PointerEvent, sender: Form) => void
|
function
|
指针松开事件。 |
Control |
⮞
onPointerCancel
: (e: PointerEvent, sender: Form) => void
|
function
|
指针取消事件。 |
Control |
⮞
onGotPointerCapture
: (e: PointerEvent, sender: Form) => void
|
function
|
指针开始捕获事件。 |
Control |
⮞
onLostPointerCapture
: (e: PointerEvent, sender: Form) => void
|
function
|
指针停止捕获事件。 |
Control |
方法 | 描述 | 继承自 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
⮞
handleSubmit(e)(e:
(保护的)处理表单提交事件。
返回值类型: |
(保护的)处理表单提交事件。 |
— | ||||||||
⮞
handleReset(e)(e:
(保护的)处理表单重置事件。
返回值类型: |
(保护的)处理表单重置事件。 |
— | ||||||||
⮞
getValue(__0)(__0:
返回值类型: |
— | |||||||||
⮞
getInputs(...)(disabled?:
|
获取表单内所有输入域。 |
— | ||||||||
⮞
submit()():
提交当前表单。 返回值类型: |
提交当前表单。 |
— | ||||||||
⮞
reset()():
重置当前表单。 返回值类型: |
重置当前表单。 |
— | ||||||||
⮞
checkValidity()():
验证当前表单内的所有输入域。 返回值类型: 返回验证后的出错的字段列表。如果返回空数组说明验证成功。如果正在执行异步验证则返回一个确认对象。 |
验证当前表单内的所有输入域。 |
— | ||||||||
⮞
reportValidity()():
|
向用户报告验证结果。 |
— | ||||||||
⮞
render()():
|
(保护的)(已覆盖)当被子类重写时负责返回当前控件的虚拟节点。 |
Control |
||||||||
⮞
init()():
|
(保护的)(已覆盖)当被子类重写时负责在关联元素后初始化当前控件。 |
Control |
||||||||
⮞
uninit()():
|
(保护的)当被子类重写时负责在元素被取消关联前取消初始化当前控件。 |
Control |
||||||||
⮞
update()():
|
重新渲染当前控件。 |
Control |
||||||||
⮞
layout(changes)(changes:
|
重新布局当前控件。 |
Control |
||||||||
⮞
invalidate()():
|
使当前控件无效并在下一帧重新渲染。 |
Control |
||||||||
⮞
renderTo(parent, ...)(parent:
|
将当前控件渲染到指定的父控件或节点。 |
Control |
||||||||
⮞
find(selector)(selector:
|
在当前控件查找指定的子控件或节点。 |
Control |
||||||||
⮞
query(selector)(selector:
|
在当前控件查找匹配的所有子控件或节点。 |
Control |
FormValidityResult 接口
表示一个表单验证结果。
字段 | 类型 | 描述 |
---|---|---|
⮞
valid
: boolean
是否验证通过。 |
boolean
|
是否验证通过。 |
⮞
inputs
: Input[]
所有验证的字段。 |
Input[]
|
所有验证的字段。 |
⮞
results
: ValidityResult[]
所有验证的结果。 |
ValidityResult[]
|
所有验证的结果。 |