# UiStr
用于创建一个单行文本输入控件,用户可以输入或编辑字符串内容。该控件继承自 `UiType`,属于**普通控件**。
## 主要方法
- `getValue()`:返回包含当前输入值的对象,格式为 `{name: value}`。
- `setValue(v)`:设置输入框的值。
- `reset()`:重置输入框为初始值(`value` 或 `defaultValue`)。
- `focus()`:使输入框获得焦点。
- `set_disabled(f)`:启用/禁用输入框。
- `set_readonly(f)`:设置输入框是否只读。
- `set_required(f)`:设置是否为必填项。
- `resultValue()`:获取实际的字符串值。
- `set_formdata(formdata)`:将当前值添加到 `FormData` 对象中,用于表单提交。
## 主要事件
- `changed`:当输入内容发生变化时触发,携带数据为 `{name: value}`。
- `blur`:当输入框失去焦点时触发。
- `focus`:当输入框获得焦点时触发。
- `keydown`:当在输入框中按下键盘键时触发,若按 Enter 键会派发 `blur` 事件。
## 源码例子
```json
{
"id": "username_input",
"widgettype": "UiStr",
"options": {
"name": "username", // 表单字段名
"value": "", // 初始值
"defaultValue": "请输入用户名", // 默认提示性值
"align": "left", // 文本对齐方式:left, center, right
"length": 50, // 最大字符数
"minlength": 2, // 最小字符数
"placeholder": "请输入用户名", // 占位符文本(支持国际化)
"width": "300px", // 控件宽度
"readonly": false, // 是否只读
"required": true, // 是否必填
"css": "custom-input-class" // 自定义CSS类名
},
"binds": [
{
"actiontype": "method",
"wid": "username_input",
"event": "changed",
"target": "submit_button",
"method": "set_disabled",
"params": {
"f": false
},
"conform": null
},
{
"actiontype": "script",
"wid": "username_input",
"event": "blur",
"target": "logger",
"script": "console.log('用户输入了:', params);",
"rtdata": {
"params": "=getValue(username_input)"
}
}
]
}
```
> **注释说明:**
> - 此控件是一个基础文本输入框,常用于登录、注册等表单场景。
> - `binds` 中第一个绑定表示:当输入内容变化时,启用“提交按钮”。
> - 第二个绑定表示:当失去焦点时,通过脚本打印当前输入值。
> - `=getValue(widgetId)` 是 Bricks 支持的运行时数据表达式语法,用于动态获取其他控件的值。
---
# UiPassword
用于创建密码输入框,隐藏用户输入内容。该控件继承自 `UiStr`,属于**普通控件**。
## 主要方法
- 继承自 `UiStr` 的所有方法(如 `getValue`, `setValue`, `reset` 等)。
- `resultValue()`:返回明文密码字符串(注意安全处理)。
## 主要事件
- `changed`:输入内容变更时触发。
- `blur`:失去焦点时触发。
- `focus`:获得焦点时触发。
## 源码例子
```json
{
"id": "password_input",
"widgettype": "UiPassword",
"options": {
"name": "password",
"value": "",
"placeholder": "请输入密码",
"required": true,
"length": 20,
"width": "100%"
},
"binds": [
{
"actiontype": "event",
"wid": "password_input",
"event": "changed",
"target": "strength_checker",
"dispatch_event": "check_strength",
"rtdata": {
"password": "=getValue(password_input)"
}
}
]
}
```
> **注释说明:**
> - 使用 `UiPassword` 可确保输入内容以掩码形式显示。
> - 绑定事件将密码值传递给“强度检测器”控件进行实时校验。
> - 安全建议:避免在日志中直接输出密码明文。
---
# UiInt
用于输入整数的控件,基于 `UiStr` 扩展,自动限制输入为数字。该控件继承自 `UiStr`,属于**普通控件**。
## 主要方法
- `resultValue()`:返回整数类型值(使用 `parseInt` 转换)。
- 其他方法均继承自 `UiStr`。
## 主要事件
- `changed`:数值改变时触发。
- `blur` / `focus`:焦点相关事件。
## 源码例子
```json
{
"id": "age_input",
"widgettype": "UiInt",
"options": {
"name": "age",
"value": 18,
"placeholder": "请输入年龄",
"minlength": 1,
"length": 3,
"width": "100px"
},
"binds": [
{
"actiontype": "method",
"wid": "age_input",
"event": "changed",
"target": "user_form",
"method": "validateField",
"params": {
"field": "age"
}
}
]
}
```
> **注释说明:**
> - 输入仅允许数字字符。
> - `resultValue()` 返回 `Number` 类型,便于后续逻辑判断。
> - 常用于需要整数输入的表单字段(如年龄、数量等)。
---
# UiFloat
用于输入浮点数的控件,继承自 `UiInt`,支持小数输入和精度控制。该控件属于**普通控件**。
## 主要方法
- `resultValue()`:返回浮点数(使用 `parseFloat` 转换)。
- `setValue(v)`:设置值并更新 DOM 显示。
## 主要事件
- `changed`:浮点数更改后触发。
- `blur` / `focus`:同上。
## 源码例子
```json
{
"id": "price_input",
"widgettype": "UiFloat",
"options": {
"name": "price",
"value": 0.00,
"dec_len": 2, // 小数位数,默认为2
"placeholder": "请输入价格",
"width": "150px"
},
"binds": [
{
"actiontype": "bricks",
"wid": "price_input",
"event": "changed",
"target": "total_calculator",
"mode": "append",
"options": {
"widgettype": "Text",
"options": {
"text": "=getValue(price_input) * 1.1"
}
}
}
]
}
```
> **注释说明:**
> - `dec_len` 控制小数点后位数,并影响 HTML `step` 属性。
> - 支持数学表达式绑定,例如计算含税总价。
> - 推荐与服务端双重验证结合使用,防止非法输入。
---
# UiDate
日期选择控件,提供原生日期选择器界面。继承自 `UiStr`,属于**普通控件**。
## 主要方法
- `opts_setup()`:初始化 `` 并设置最大最小日期。
- `resultValue()`:返回字符串格式的日期(如 `"2025-04-05"`),空值返回 `null`。
## 主要事件
- `changed`:日期变更时触发。
- `blur` / `focus`:焦点事件。
## 源码例子
```json
{
"id": "birthday_input",
"widgettype": "UiDate",
"options": {
"name": "birthday",
"value": "1990-01-01",
"min_date": "1900-01-01",
"max_date": "2025-12-31",
"required": true
},
"binds": [
{
"actiontype": "script",
"wid": "birthday_input",
"event": "changed",
"target": "age_display",
"script": "const birth = new Date(params.birthday); const age = new Date().getFullYear() - birth.getFullYear(); bricks.getWidget('age_label').setValue('年龄: ' + age + '岁');",
"rtdata": {
"params": "=getValue(birthday_input)"
}
}
]
}
```
> **注释说明:**
> - 浏览器原生日期选择器兼容性良好。
> - `min_date` 和 `max_date` 可限制选择范围。
> - 示例中通过脚本动态计算并显示年龄。
---
# UiCheck
复选框控件(单个),用于布尔状态切换(true/false)。该控件继承自 `UiType`,是**普通控件**。
## 主要方法
- `setValue(v)`:设置为选中(true)或未选中(false)。
- `resultValue()`:返回布尔值。
- `set_value_from_input(e)`:内部方法,响应图标状态变化。
## 主要事件
- `changed`:状态切换时触发,携带 `{name: true|false}` 数据。
## 源码例子
```json
{
"id": "agree_check",
"widgettype": "UiCheck",
"options": {
"name": "agree",
"value": false
},
"binds": [
{
"actiontype": "method",
"wid": "agree_check",
"event": "changed",
"target": "submit_button",
"method": "set_disabled",
"params": {
"f": "=!getValue(agree_check).agree"
}
}
]
}
```
> **注释说明:**
> - 使用 SVG 图标实现美观的勾选效果。
> - 绑定逻辑:只有用户勾选“同意”后,“提交”按钮才可用。
> - `= !getValue(...)` 为 Bricks 支持的表达式语法。
---
# UiCheckBox
多选/单选框组控件,支持从本地数据或远程 URL 加载选项列表。继承自 `UiType`,属于**容器控件**(可包含多个子控件)。
## 主要方法
- `build_checkboxs()`:根据数据构建多个 `UiCheck` 子控件。
- `load_data_onfly()`:异步加载远程数据。
- `set_value_from_input(event)`:处理任一选项变化,更新 `this.value` 数组。
- `setValue(v)`:设置已选值(支持数组或单值)。
## 主要事件
- `changed`:任一选项变化时触发,返回 `{name: [values]}` 或 `{name: value}`。
## 源码例子
```json
{
"id": "hobby_checkbox",
"widgettype": "UiCheckBox",
"options": {
"name": "hobbies",
"label": "兴趣爱好",
"textField": "text",
"valueField": "id",
"data": [
{ "id": "reading", "text": "阅读" },
{ "id": "sports", "text": "运动" },
{ "id": "music", "text": "音乐" }
],
"multicheck": true
},
"binds": [
{
"actiontype": "event",
"wid": "hobby_checkbox",
"event": "changed",
"target": "preference_analyzer",
"dispatch_event": "update_preferences",
"rtdata": {
"hobbies": "=getValue(hobby_checkbox)"
}
}
]
}
```
> **注释说明:**
> - 若 `multicheck: true`,则允许多选;否则为单选。
> - 支持静态 `data` 或动态 `dataurl` 加载选项。
> - 常用于表单中的多项选择题或偏好设置。
---
# UiCode
下拉选择控件(`