如何使用 dojo 约束对象为我的 dojo TextBox 或 NumberTextBox 中的 IP 地址自定义文本输入字段
Posted
技术标签:
【中文标题】如何使用 dojo 约束对象为我的 dojo TextBox 或 NumberTextBox 中的 IP 地址自定义文本输入字段【英文标题】:How do I use the dojo constraints object to customize the text input field for an IP address in my dojo TextBox or NumberTextBox 【发布时间】:2015-03-20 20:09:37 【问题描述】:如何使用约束对象为我的 dojo TextBox 或 NumberTextBox 中的 IP 地址自定义文本输入字段。或者我应该使用另一个对象来执行此操作,用户必须正确输入 IP 地址。
我只是想创建一个输入字段供用户输入 IP 地址,这需要这样的内容:pattern:'min:1,max255.min:0,max255.min:0,max255.min:0,max255'
我相信我目前的问题是我正在尝试使用 NumberTextBox 并且它的约束覆盖了我的约束。
我真的很想知道我有哪些可用的约束选项,但我发现的有关 dojo 约束的文档已被弃用,并且替换的链接指向 DateTimeBox。 :|
这是我的代码的 sn-p:
cellWidget.outProActFeedsDestAddr.set('constraints', pattern:'min:1,max255.min:0,max255.min:0,max255.min:0,max255');
【问题讨论】:
【参考方案1】:虽然 IP 地址在某种意义上是数字地址,但 NumberTextBox 确实适用于典型的单个数字值,所以这不是一个真正的选择。您可能有两种选择:
-
使用 ValidationTextBox 并给它一个适当的
regExp
(注意,Dijit 需要一个字符串作为这个属性,并在其周围应用^
和$
),或者一个validator
函数(有一个@987654326 @ 你可能会玩)
编写一个表单小部件,将 4 个 NumberTextBox
实例合并到一个 value
中(我不确定网格是否会在使用这种方法的制表位方面发挥作用)
【讨论】:
完美 - 谢谢!我试图让我的正则表达式工作 - 似乎没有任何工作。这是我试过的一个:cellWidget.ipColumn.set('regExp', "^([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])$");
我发布了另一个关于让正则表达式工作的问题:***.com/questions/29216116/…
所以是的 - ValidationTextBox 和正确的正则表达式为我解决了这个问题。我使用了这个正则表达式(需要双 \\ 我相信让它在我的 dojo ValidationTextBox 中工作):([01]?\\d\\d?|2[0-4]\\d|25[0-5])[.]([01]?\\d\\d?|2[0-4]\\d|25[0-5])[.]([01]?\\d\\d?|2[0-4]\\d|25[0-5])[.]([01]?\\d\\d?|2[0-4]\\d|25[0-5])
以上是关于如何使用 dojo 约束对象为我的 dojo TextBox 或 NumberTextBox 中的 IP 地址自定义文本输入字段的主要内容,如果未能解决你的问题,请参考以下文章
dojo / mvc / at不以约束datePattern的格式返回dijit / form / DateTextBox