Переключатели с неуникальными именами полей, возвращающие строковые значения вместо массивов - PullRequest
0 голосов
/ 14 ноября 2018

Я создал серию переключателей в своем дополнении Gmail.
После нажатия кнопки я хочу получить доступ к значениям переключателей. Некоторые из переключателей могут иметь те же имена полей, которые я устанавливаю с помощью Функция Switch :: setFieldName, вот так:

var switchKeyValue = CardService.newKeyValue()
    .setSwitch(CardService.newSwitch()
        .setFieldName(email)
        .setValue(name));

Позже я перебираю входные значения (значения переключателей) отправленной формы, используя:

// "e" is the event object passed to the event listener
var form = e.formInput;
var emails = [];
for (key in form) {
    if (form.hasOwnProperty(key)) {
        emails.push(key);
    }
}

Как правило, вы ожидаете, что поля с одинаковыми именами будут перезаписаны, так как они будут добавлены в объект formInput.
Например, если бы я добавил 3 переключателя с именем поля «car» и значениями (в этом порядке) «красный», «синий», «зеленый», результирующая форма будет содержать только {«car»: «green»}.

Однако в документации для функции setFieldName написано:
"В отличие от других полей формы, это имя поля не обязательно должно быть уникальным . Входные значения формы для переключателей, использующих то же имя поля, возвращаются как массив . Массив состоит из значений для всех включенных коммутаторов с таким именем поля. "

Таким образом, можно было бы ожидать получить что-то вроде {"car": ["red", "blue", "green"]}.
Тем не менее, я получаю только строковые значения для каждого переключателя, а не массив, содержащий несколько строк.

В качестве обходного пути я установил имя поля, чтобы оно содержало как исходное имя поля, так и значение поля, используя конкатенацию строк (и разделенный символ), так что я получаю набор ВСЕХ значений виджета. Тем не менее, это не идеально, так как мне придется позже разбить строку, чтобы разобрать ключ и значение поля. Кроме того, это может даже не работать, если символ разделения является частью исходного имени поля.

По сути, я хочу собрать все значения переключателей формы, но мне нужно отслеживать те из них, которые связаны (с одинаковым именем поля).
Каков наилучший способ добиться этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...