Изменение значения события в CardService.newTextInput не изменяет отображаемое значение в textinput в аддоне gmail. - PullRequest
2 голосов
/ 29 января 2020

У меня есть простой аддон gmail, в котором я пытаюсь создать пользовательскую форму входа. Проблема, с которой я сталкиваюсь, заключается в том, что, когда я изменяю поле ввода с помощью обработчика изменений, отображаемое значение не изменяется. Попытка скрыть поле пароля.

Виджет ввода текста

function getMembersSelectMenu(){

   var textInput = CardService.newTextInput()
    .setFieldName("Password")
    .setTitle("Password")
    .setHint("Enter Password")
    .setOnChangeAction(CardService.newAction()
    .setFunctionName("handlePasswordChange"))


return textInput;

}

функция обработчика для textInput

function handlePasswordChange(e){
 // e.formInput.pass = e.formInput.Password;
  e.formInput.Password = "*";
  e.formInputs.Password = "******"
  Logger.log("my value object" + JSON.stringify(e));

}

Уже проверено, объект обновлен но не меняется в представлении

1 Ответ

2 голосов
/ 29 января 2020

Когда значение поля textInput изменяется, handlePasswordChange вызывается с eventObject. Я думаю, что вы пытаетесь установить значение в этом eventObject внутри handlePasswordChange, а не в этом поле.

Я думаю, что мы можем сделать что-то вроде этого:

1.Создайте несколько глобальная переменная для отслеживания поля.

2. Создайте поле и присвойте ему эту переменную.

3.На значении измените установленное значение в этом.

var passwordField;

function getMembersSelectMenu(){
     passwordField = CardService.newTextInput()
        .setFieldName("Password")
        .setTitle("Password")
        .setHint("Enter Password")
        .setOnChangeAction(CardService.newAction()
        .setFunctionName("handlePasswordChange"))
    return passwordField;
}

function handlePasswordChange(e){
    // e.formInput.pass = e.formInput.Password;
    passwordField.setValue("*******");
}
...