# 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 下拉选择控件(`