Обновите третий компонент при фокусировке/щелчке на основе выбранных значений двух других компонентов

#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