setsandboxmode script modal google from example ejemplos apps app google-apps-script

google-apps-script - modal - msgbox google script



cómo saber qué elemento de UI está en foco (3)

Tengo una función de manejo de eventos para un cuadro de texto, que hace lo siguiente,

  • Busca en los contactos del usuario y muestra los contactos que coinciden con el patrón del cuadro de texto

La misma función debe hacerse para dos cuadros de texto más.

Como el valor del cuadro de texto se obtiene usando "e.parameter.textbox1NAME", he agregado dos funciones más como controladores de eventos,

textbox2.addKeyUpHandler(''search2''); textbox3.addKeyUpHandler(''search3'');

además de

textbox1.addKeyUpHandler(''search1'');

La única diferencia entre las tres funciones es si el patrón utilizado es "e.parameter.textbox1NAME" o "e.parameter.textbox2NAME" o "e.parameter.textbox3NAME"

Creo que esto es ineficiente, ¿hay alguna forma de saber qué elemento invoca al controlador o qué elemento está enfocado? Gracias


¡La respuesta de Srik es muy inteligente! Me gustó y quería probarlo ... ¡aquí hay un ejemplo para ilustrar!

function multitext_test() { var app = UiApp.createApplication().setHeight(''150'').setWidth(''200''); app.setTitle("test these textboxes"); var panel = app.createFlowPanel(); var txt1 = app.createTextBox().setName(''txt1'').setId(''txt1''); var txt2 = app.createTextBox().setName(''txt2'').setId(''txt2''); var txt3 = app.createTextBox().setName(''txt3'').setId(''txt3''); var label = app.createLabel(''type in any of these textBoxes'').setId(''label'') app.add(panel.add(txt1).add(txt2).add(txt3).add(label)); var QHandler = app.createServerHandler("key").addCallbackElement(panel); txt1.addKeyUpHandler(QHandler); txt2.addKeyUpHandler(QHandler); txt3.addKeyUpHandler(QHandler); // var doc = SpreadsheetApp.getActive(); doc.show(app); } // function key(e){ var app = UiApp.getActiveApplication(); var src = e.parameter.source; var newValue = e.parameter[src]; var act= app.getElementById(src) label = app.getElementById(''label'') label.setText("You typed ''"+newValue+"'' in textBox nr "+src.substring(3)); act.setStyleAttribute(''background'',''yellow''); return app }


Puede tener una única función y averiguar qué cuadro de texto fue editado desde e.parameter.source. Por ejemplo

function onKeyUp(e){ // Make sure the ID and the name of the widgets are the same. var src = e.parameter.source; var newValue = e.parameter[src]; // Next steps }

Dado que la mayoría de sus preguntas son bastante básicas, le sugiero que investigue un poco sobre , el rastreador de problemas y el antiguo foro de Google Apps Script antes de formular una pregunta aquí.


Si lo entiendo bien, es algo así como: Tengo 1-n cajas y quiero vincular un controlador para un evento específico. La solución (con jquery) es usar un selector para los objetos dom (cuadros) y adjuntar un controlador, por ejemplo, hacer clic en todos ellos de esta manera:

$(''.textboxes'').click(function(e){ console.log(e.currentTarge) // <-- Here current Target is your DOM Object. })

Además, esta referencia está vinculada a la copia de la función, por lo que se ejecuta con el contexto del objeto. Consulte los siguientes sitios para ver ejemplos: jquery click event o jquery bind function

Cheers Laidback