#javascript #formio
Вопрос:
Мой form.io панель выглядит как этот JSON. У меня есть панель, в которой есть такие компоненты, как выпадающие списки и текстовые поля.
Я пытаюсь получить вычисленное значение для компонента текстового поля на основе выбранных значений двух других компонентов. Значение должно быть заполнено либо во время получения фокуса, либо при нажатии события в компоненте textfileld.
Я попытался использовать calculateValue в текстовом поле, но, похоже, ничего не происходит. Ошибок тоже нет. Компонент с ключом dental по ссылке, приведенной выше, — это то, где вы найдете javascript, который я пробовал.
Ответ №1:
В form.io значение calculateValue, вам нужно установить значение, чтобы обновить поле.
value=data.param1 data.param2;
У меня здесь есть пример текстового поля, который сразу же сработал для меня:
{
"label": "Select Select1",
"tableView": true,
"calculateValue": "value=data.select data.select1",
"key": "textText2",
"type": "textfield",
"input": true
},
Вы также можете столкнуться с проблемами из-за того, как вы получаете значения данных. данные. это рекомендуемый способ получения других значений данных в calculateValue.
Комментарии:
1. Спасибо. Но, как я уже упоминал в своем вопросе, я хотел бы сделать условный расчет, который в моем случае выглядит следующим образом. Если значение A будет выбрано в раскрывающемся списке D1 , а значение B будет выбрано в раскрывающемся списке D2 , я бы хотел, чтобы в текстовом поле отображалось 8, т. е. 3 5. Если в двух раскрывающихся списках будут выбраны другие значения, я хочу, чтобы в текстовом поле был показан другой расчет. Я надеюсь, что в этом есть смысл.
2. @Bisoux В вашем выпадающем списке есть цифры? То, что я опубликовал, работает, когда значения раскрывающихся параметров заданы числом. Похоже, что вопрос, который вы задаете, может быть не таким form.io конкретно. Возможно, вам просто потребуется сопоставить значения ваших данных с числами при расчете значения.
3. два выпадающих списка не являются числами. Не уверен, что вы подразумеваете под их отображением. Я попытался использовать javascript, если…тогда . вариант, который я вижу, — это использование какого-то прослушивателя событий, который срабатывает каждый раз, когда меняется любой из выпадающих списков, которые я пробовал, но это тоже не работает.
4. например, если выбран параметр A, установите значение 1 равным 3, а если это B, установите значение 1 равным 8. или просто создайте словарь: var dict={ «первый вариант»: 27, «второй вариант»: 36 } console.log(dict[«первый вариант»] 2); //29