Teal TealUI

表单布局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>
)
水平布局
API
Form 类
FormValidityResult 接口

水平布局


<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

(已覆盖)关联的元素。

继承自

Control

HTMLFormElement

(已覆盖)关联的元素。

Control
readyState : ControlState

获取当前控件的渲染状态。

继承自

Control

ControlState

获取当前控件的渲染状态。

Control
vNode : VNode

(保护的)获取当前控件关联的虚拟节点。

继承自

Control

VNode

(保护的)获取当前控件关联的虚拟节点。

Control
sourceVNode : VNode

获取创建该控件使用的源虚拟节点。

继承自

Control

VNode

获取创建该控件使用的源虚拟节点。

Control
alwaysUpdate : boolean

控件是否使用主动更新模式。

继承自

Control

boolean

控件是否使用主动更新模式。

Control
body : HTMLElement

(只读)获取用于包含子控件和节点的根元素。

继承自

Control

HTMLElement

(只读)获取用于包含子控件和节点的根元素。

Control
duration : number = 200

渐变的持续毫秒数。如果为 0 则不使用渐变。

继承自

Control

number

渐变的持续毫秒数。如果为 0 则不使用渐变。

Control
class : string

CSS 类名。

继承自

Control

string

CSS 类名。

Control
hidden : boolean

是否隐藏。

继承自

Control

boolean

是否隐藏。

Control
style : string | { [key: string]: string | number; }

控件样式。

继承自

Control

string | object

控件样式。

Control
id : string

控件序号。

继承自

Control

string

控件序号。

Control
content : NodeLike

控件内容。

继承自

Control

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:Event):void

(保护的)处理表单提交事件。

参数 类型 描述 默认值
e* Event

返回值

类型:void

(保护的)处理表单提交事件。

handleReset(e)(e:Event):void

(保护的)处理表单重置事件。

参数 类型 描述 默认值
e* Event

返回值

类型:void

(保护的)处理表单重置事件。

getValue(__0)(__0:object):object
参数 类型 描述 默认值
__0* { hidden?: boolean; disabled?: boolean; }

返回值

类型:{ [x: string]: any; }

getInputs(...)(disabled?:boolean, hidden?:boolean):Input[]

获取表单内所有输入域。

参数 类型 描述 默认值
disabled boolean false
hidden boolean false

返回值

类型:Input[]

返回输入域列表。

获取表单内所有输入域。

submit()():void

提交当前表单。

返回值

类型:void

提交当前表单。

reset()():void

重置当前表单。

返回值

类型:void

重置当前表单。

checkValidity()():FormValidityResult | Promise<FormValidityResult>

验证当前表单内的所有输入域。

返回值

类型:FormValidityResult | Promise<FormValidityResult>

返回验证后的出错的字段列表。如果返回空数组说明验证成功。如果正在执行异步验证则返回一个确认对象。

验证当前表单内的所有输入域。

reportValidity()():FormValidityResult | Promise<FormValidityResult>

向用户报告验证结果。

返回值

类型:FormValidityResult | Promise<FormValidityResult>

向用户报告验证结果。

render()():VNode

(保护的)

返回值

类型:VNode

继承自

Control

(保护的)(已覆盖)当被子类重写时负责返回当前控件的虚拟节点。

Control
init()():void

(保护的)

返回值

类型:void

继承自

Control

(保护的)(已覆盖)当被子类重写时负责在关联元素后初始化当前控件。

Control
uninit()():void

(保护的)当被子类重写时负责在元素被取消关联前取消初始化当前控件。

返回值

类型:void

继承自

Control

(保护的)当被子类重写时负责在元素被取消关联前取消初始化当前控件。

Control
update()():void

重新渲染当前控件。

返回值

类型:void

继承自

Control

重新渲染当前控件。

Control
layout(changes)(changes:Changes):void

重新布局当前控件。

参数 类型 描述 默认值
changes* Changes

返回值

类型:void

继承自

Control

重新布局当前控件。

Control
invalidate()():void

使当前控件无效并在下一帧重新渲染。

返回值

类型:void

继承自

Control

使当前控件无效并在下一帧重新渲染。

Control
renderTo(parent, ...)(parent:Control | Node, refChild?:Control | Node):void

将当前控件渲染到指定的父控件或节点。

参数 类型 描述 默认值
parent* Control | Node
refChild Control | Node

返回值

类型:void

继承自

Control

将当前控件渲染到指定的父控件或节点。

Control
find(selector)(selector:string):Control | HTMLElement

在当前控件查找指定的子控件或节点。

参数 类型 描述 默认值
selector* string

返回值

类型:Control | HTMLElement

返回子控件或节点。如果找不到则返回 null。

继承自

Control

在当前控件查找指定的子控件或节点。

Control
query(selector)(selector:string):(Control | HTMLElement)[]

在当前控件查找匹配的所有子控件或节点。

参数 类型 描述 默认值
selector* string

返回值

类型:(Control | HTMLElement)[]

返回子控件或节点列表。

继承自

Control

在当前控件查找匹配的所有子控件或节点。

Control

FormValidityResult 接口

表示一个表单验证结果。

字段 类型 描述
valid : boolean

是否验证通过。

boolean

是否验证通过。

inputs : Input[]

所有验证的字段。

Input[]

所有验证的字段。

results : ValidityResult[]

所有验证的结果。

ValidityResult[]

所有验证的结果。