Вопрос

Валидацию для inputbox, каким образом реализовать ?

Мне необходимо , если поле не заполнено то выводить сообщения и не закрывать окно с вводом
 

disLeadChoiser: function() {
                this.set("myList", new Terrasoft.Collection());
                this.set("myEnum", new Terrasoft.Collection());
				var controlConfig = {
                    reasonDis: {
                        dataValueType: Terrasoft.DataValueType.ENUM,
                        customConfig: {
                            tag: "ReasonDis",
                            list: {
                                bindTo: "myList"
                            },
                            prepareList: {
                                bindTo: "getCollectionValues"
                            },
                            change: {
                                bindTo: "onMyValueChange"
                            }
                        },
                        isRequired: true,
                        caption: "Причина дисквалификации",
                        value: null
                    },
                    text: {
                        customConfig: {
                            className: "Terrasoft.MemoEdit",
                        },
                        isRequired: true,
                        dataValueType: Terrasoft.DataValueType.TEXT,
                        caption: "Причина дисквалификации",
                        value: "",
                    },
                };
                this.showInputBox(controlConfig, false);
			},
            showInputBox : function(controlConfig, status){
                var self = this;
                Terrasoft.utils.inputBox("Укажите причину дисквалификации",
                    function(buttonCode, controlData) {
 
                        if (buttonCode === "yes") {
                            if(!controlData.text.value){
                                if(status) {
                                    self.showInformationDialog("Заполните обязательные поля");
                                }
                                self.showInputBox(controlConfig, true);
                                return;
                            }
                            this.setDataDisqualifydedLead(controlData);
                        }
                    },
                    [
                        {
                            className: "Terrasoft.Button",
                            caption: "Продолжить",
                            returnCode: "yes"
                        },
                        {
                            className: "Terrasoft.Button",
                            caption: "Отмена",
                            returnCode: "no"
                        }
                    ],
                    this,
                    controlConfig,
                    {defaultButton: 0}
 
                );
 
                Terrasoft.each(Terrasoft.MessageBox.controlArray, function(item) {
                    item.control.bind(this);
                }, this);
 
            },

 

Нравится

5 комментариев

Здравствуйте, можно поподробнее описать задачу. 
А установить поле обязательным для заполнения, не решает вашу задачу?

 

Булат Хабирзянов,
речь не про просто страницу редактирования, а именно inputbox(код выше прикрепил ), я сначала делал через кастомные модальные окна, но с справочными полями у меня ничего не вышло, поэтому пал выбор на inputbox, в котором я пытаюсь сделать валидацию
Когда  я нажимаю на ок или отмена, то окно закрывается без проверки, как сделать , что бы оно не закрывалось и я хотя бы вывел сообщение о обязательности полей

Dima Avdoshin,

Можно проверять введенное значение. И если оно пустое, то показывать модалку еще раз. примерно так:

showInput: function() {
Terrasoft.showInputBox("Введите текст", function(result1, arg1, arg2) {
            if (result1)
                if (arg1.name.value) {
                    Terrasoft.showConfirmation("все ок, вы ввели " + arg1.name.value);
                }
            else {
                this.showInput();
            }
        }, ["ok"], null, {
            name: {
                dataValueType: Terrasoft.DataValueType.TEXT,
                value: "",
                customConfig: {
                    className: "Terrasoft.MemoEdit",
                    height: "50px"
                }
            }
        }, {
            defaultButton: 0
        });
}

 

Дмитрий Антохин,

я так иделаю, но выглядит костыльно как-то

В самом inputbox нет валидации, но вы можете реализовать собственный контрол с валидацией и использовать его вместо Terrasoft.MemoEdit в модальном окне.

Показать все комментарии