一个替代常规 <input>
的组件,允许选择值的类型,包括字符串、数字和布尔类型的选项。
类型: 字符串
如果定义,设置输入的默认类型,如果 typeField
未设置。
$(".input").typedInput({
default: "msg"
});
类型: 数组
设置元素提供的类型列表。
选项的值是字符串标识符的数组,用于预定义类型和 TypeDefinition 对象,用于任何自定义类型。
预定义的类型包括:
标识符 | 描述 |
---|---|
msg |
一个 msg. 属性表达式 |
flow |
一个 flow. 属性表达式 |
global |
一个 global. 属性表达式 |
str |
一个字符串 |
num |
一个数字 |
bool |
一个布尔值 |
json |
一个有效的 JSON 字符串 |
bin |
一个 Node.js 缓冲区 |
re |
一个正则表达式 |
jsonata |
一个 Jsonata 表达式 |
date |
当前时间戳 |
env |
一个环境变量 |
node |
一个 node. 属性表达式 |
cred |
一个安全凭据 |
$(".input").typedInput({
types: ["msg","str"]
});
类型: CSS 选择器
在某些情况下,希望已有一个 <input>
元素来存储 typedInput 的类型值。此选项允许提供这样的现有元素。随着 typedInput 类型的改变,提供的输入的值也会改变。
$(".input").typedInput({
typeField: ".my-type-field"
});
在 Node-RED 节点中使用时,可以通过在节点的 defaults
对象中添加一个条目来将此值作为节点属性存储。这确保类型与节点配置中的值一起保存。
<div class="form-row">
<label>示例:</label>
<input type="text" id="node-input-myField">
<input type="hidden" id="node-input-myFieldType">
</div>
RED.nodes.registerType('example', {
defaults: {
myField: { value: "" },
myFieldType: { value: "str" }
},
...
oneditprepare: function () {
$("#node-input-myField").typedInput({
typeField: "#node-input-myFieldType"
});
}
})
自 Node-RED 1.2.7 起
禁用当前启用的 typedInput。
可选的 state
参数可用于切换 typedInput 的禁用/启用状态。如果 state
为 true,则元素将被禁用,否则将启用。
$(".input").typedInput('disable');
自 Node-RED 1.2.7 起
返回: 布尔值
获取当前 typedInput 是否被禁用。
$(".input").typedInput('disabled');
自 Node-RED 1.3.3 起
启用当前禁用的 typedInput。
$(".input").typedInput('enable');
在当前可见时隐藏 typedInput。
$(".input").typedInput('hide');
在当前隐藏时显示 typedInput。
$(".input").typedInput('show');
返回: 字符串
获取选定的 typedInput 类型。
var type = $(".input").typedInput('type');
设置选定的 typedInput 类型。
$(".input").typedInput('type','msg');
设置 typedInput 提供的类型列表。请参见 types
选项 的描述。
$(".input").typedInput('types',['str','num']);
返回: 布尔值
触发对 typedInput 的类型/值的重新验证。每当类型或值变化时都会自动发生,但此方法允许手动运行。
var isValid = $(".input").typedInput('validate');
返回: 字符串
获取 typedInput 的值。
var value = $(".input").typedInput('value');
设置 typedInput 的值。
$(".input").typedInput('value','payload');
设置 typedInput 的宽度。
$(".input").typedInput('width', '200px');
当输入的类型或值发生更改时触发。
$(".input").on('change', function(event, type, value) {} );
注意: value
属性是在 Node-RED 1.3 中添加的
一个 TypeDefinition
对象描述了可以由 typedInput 元素提供的类型。
它是一个具有以下属性的对象:
属性 | 类型 | 必需 | 描述 |
---|---|---|---|
value |
字符串 | 是 | 类型的标识符 |
label |
字符串 | 显示在类型菜单中的标签 | |
icon |
字符串 | 在类型菜单中显示的图标。可以是图像 URL,或者是 FontAwesome 4 图标,例如 "fa fa-list" 。 |
|
options |
数组 | 如果该类型具有固定的值集合,则这是一个字符串选项的数组。例如,布尔类型的 ["true","false"] 。 |
|
multiple |
布尔值 | 如果设置了 options ,则可以启用对它们的多重选择。 |
|
hasValue |
布尔值 | 如果该类型没有值,则设置为 false 。 |
|
validate |
函数 | 用于验证该类型值的函数。 | |
valueLabel |
函数 | 生成给定值的标签的函数。该函数接受两个参数:container - 标签应构建的 DOM 元素,以及 value 。 |
|
autoComplete |
函数 | 自 2.1.0 起. 如果设置,则在输入上启用自动补全,使用此函数获取补全建议。有关详细信息,请参见 autoComplete。此选项不能与 options 、hasValue=false 或 valueLabel 一起使用。 |
<input type="text" id="node-input-example1">
$("#node-input-example1").typedInput({
type:'str',
types:['str','num','bool']
})
<input type="text" id="node-input-example2">
$("#node-input-example2").typedInput({
type:'msg',
types:['msg']
})
<input type="text" id="node-input-example3">
$("#node-input-example3").typedInput({
type:'flow',
types:['flow','global']
})
<input type="text" id="node-input-example4">
$("#node-input-example4").typedInput({type:"fruit", types:[{
value: "fruit",
options: [
{ value: "apple", label: "Apple"},
{ value: "banana", label: "Banana"},
{ value: "cherry", label: "Cherry"},
]
}]})
<input type="text" id="node-input-example5">
$("#node-input-example5").typedInput({type:"fruit", types:[{
value: "fruit",
multiple: true,
options: [
{ value: "apple", label: "Apple"},
{ value: "banana", label: "Banana"},
{ value: "cherry", label: "Cherry"},
]
}]})
由于 typedInput
增强常规 HTML <input>
的方式,其值作为字符串存储。例如,布尔值存储为 "true"
和 "false"
。
当作为节点属性存储时,节点的运行时部分需要解析字符串以获取类型值。
提供了一个工具函数来处理 TypedInput 提供的内置类型。
RED.util.evaluateNodeProperty(value, type, node, msg, callback)
属性 | 类型 | 必需 | 描述 |
---|---|---|---|
value |
字符串 | 是 | 要评估的属性 |
type |
字符串 | 是 | 属性的类型 |
node |
节点 | 是,针对某些类型 | 评估属性的节点 |
msg |
消息对象 | 是,针对某些类型 | 用于评估的消息对象 |
callback |
回调 | 是,对于 flow /global 类型 |
接收结果的回调 |
对于大多数类型,可以在不提供回调的情况下同步使用该函数。
const result = RED.util.evaluateNodeProperty(value, type, node)
对于 msg
类型,还应提供消息对象:
const result = RED.util.evaluateNodeProperty(value, type, node, msg)
要处理 flow
和 global
上下文类型,需要提供节点以及由于上下文访问的异步性质而需要的回调函数:
RED.util.evaluateNodeProperty(value, type, node, msg, (err, result) => {
if (err) {
// 访问上下文时出错
} else {
// 对 'result' 做某些操作
}
})
版权所有 OpenJS Foundation 和 Node-RED 贡献者。保留所有权利。OpenJS Foundation 拥有并使用注册商标。有关 OpenJS Foundation 的商标列表,请参阅我们的 商标政策 和 商标列表。未在 OpenJS Foundation 商标列表 中列出的商标和徽标是其各自持有者的商标™或注册商标®。使用它们并不意味着与它们有任何关联或认可。
OpenJS Foundation | 使用条款 | 隐私政策 | OpenJS Foundation 章程 | 商标政策 | 商标列表 | Cookie 政策