Как использовать объект ограничений dojo для настройки поля ввода текста для IP-адреса в TextBox или NumberTextBox моего dojo

Как использовать объект ограничений для настройки поля ввода текста для IP-адреса в TextBox или NumberTextBox моего додзё. Или есть другой объект, который я должен использовать для этого, когда пользователь должен правильно ввести IP-адрес.

Я просто хочу создать поле ввода, чтобы пользователи могли вводить IP-адрес, для чего требуется что-то вроде этого: pattern:'min:1,max255.min:0,max255.min:0,max255.min:0,max255'

Я считаю, что моя текущая проблема заключается в том, что я пытаюсь использовать NumberTextBox, и у него есть ограничения, которые переопределяют мои ограничения.

Я действительно хотел бы знать, какие все параметры ограничений у меня есть, но документация по ограничениям додзё, которую я нашел, устарела, а замененная ссылка указывала на DateTimeBox. :|

Вот фрагмент моего кода:

cellWidget.outProActFeedsDestAddr.set('constraints', {pattern:'min:1,max255.min:0,max255.min:0,max255.min:0,max255'});

введите здесь описание изображения


person DemiSheep    schedule 20.03.2015    source источник


Ответы (1)


В то время как IP-адреса в некотором смысле являются числовыми, NumberTextBox действительно предназначен для типичных одиночных числовых значений, поэтому здесь это не вариант. Потенциально у вас есть несколько вариантов:

  1. Используйте ValidationTextBox и присвойте ему соответствующий regExp (обратите внимание, что Dijit ожидает строку для этого свойства и применяет ^ и $ вокруг себя) или функцию validator (есть dojox/validate/regexp.ipAddress, с которой вы потенциально могли бы поиграть)
  2. Напишите виджет формы, который объединяет 4 NumberTextBox экземпляра в один value (я не уверен, что при таком подходе сетка бросит гаечный ключ в работу в отношении позиций табуляции)
person Ken Franqueiro    schedule 21.03.2015
comment
Идеально - спасибо! Я пытаюсь заставить свое регулярное выражение работать - ничего не работает. Вот один из них, который я пробовал: 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])$"); - person DemiSheep; 23.03.2015
comment
Я разместил еще один вопрос о том, как заставить работать регулярное выражение: stackoverflow.com/questions/29216116/ - person DemiSheep; 23.03.2015
comment
Так что да - ValidationTextBox и правильное регулярное выражение исправили это для меня. Я использовал это регулярное выражение (нужен двойной \\, я считаю, чтобы заставить его работать в моем додзё 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]) - person DemiSheep; 26.03.2015