如何使用 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 地址自定义文本输入字段的主要内容,如果未能解决你的问题,请参考以下文章

使用 xdomain 开发 DOJO 自定义模块

DoJo 增强的网格动态更新约束不起作用

dojo / mvc / at不以约束datePattern的格式返回dijit / form / DateTextBox

dojo 表单验证清除

arcgis自定义infowindow

如何在 dojo 小部件中使用 json 成员对象