Google apps script 如何在文本框上添加一个向上键事件来捕获用户';s";输入“;输入
我的条件是我有一个文本框和一个按钮,当用户在文本框中输入一些东西并点击回车键时,我希望使用与该按钮相同的处理程序。 我看到textbox中有一个名为addKeyUpHandler的函数,但该函数的工作方式似乎与下面的示例类似Google apps script 如何在文本框上添加一个向上键事件来捕获用户';s";输入“;输入,google-apps-script,Google Apps Script,我的条件是我有一个文本框和一个按钮,当用户在文本框中输入一些东西并点击回车键时,我希望使用与该按钮相同的处理程序。 我看到textbox中有一个名为addKeyUpHandler的函数,但该函数的工作方式似乎与下面的示例类似 // Create handler to mark the input in textBoxB as valid var onInvalidInput1 = app.createClientHandler() .validateNumber(textBo
// Create handler to mark the input in textBoxB as valid
var onInvalidInput1 = app.createClientHandler()
.validateNumber(textBoxB)
.forTargets(textBoxB).setStyleAttribute("color", "black");
// Add all the handlers to be called when the user types in the text boxes
textBoxA.addKeyUpHandler(onInvalidInput1);
我认为你不能用Clienthandler来做。您当然可以使用ServerHandler。给猫剥皮的方法不止一种,但这种方法很有效,所以可以玩一下类似的东西。在这里,我使用两个不同的服务器处理程序,一个用于文本框,一个用于按钮,并通过管道将它们传递到一个通用的doAction函数。当然,您可以对这两个事件使用单个处理程序,但这会增加发送到服务器的每个keyUp事件的开销,甚至在您知道它是一个有效数字之前
// Script-as-app template.
function doGet() {
var app = UiApp.createApplication();
var textbox = app.createTextBox().setName('textbox');
app.add(textbox);
var button = app.createButton('Click Me');
app.add(button);
var label = app.createLabel('___').setId('lbl');
app.add(label);
// only fire ServerHandler for onKeyUp if it passees validation
var textBoxHandler = app.createServerHandler('textBoxHandlerFunction').validateNumber(textbox);
var buttonHandler = app.createServerHandler('buttonHandlerFunction');
textBoxHandler.addCallbackElement(textbox);
buttonHandler.addCallbackElement(textbox);
textbox.addKeyUpHandler(textBoxHandler);
button.addClickHandler(buttonHandler);
return app;
}
function textBoxHandlerFunction(e) {
var app = UiApp.getActiveApplication();
if(e.parameter.keyCode == 13)
{
app = doAction(app, e);
}
return app;
}
function buttonHandlerFunction(e) {
// missing validation that textbox is a number
return doAction(UiApp.getActiveApplication(), e);
}
function doAction(app, e)
{
// do your stuff
app.getElementById('lbl').setText('fired...' + e.parameter.textbox);
return app;
}
我最终使用了下面的代码
function doGet() {
var tb_search = myapp.createTextBox().setName('tb_search').setId('tb_search').setWidth(LENGTH_MIDDLE)
var btn_search = myapp.createButton('Go').setId('btn_search');
var h_search = myapp.createServerClickHandler('procSearch');
h_search.addCallbackElement(tb_search);
btn_search.addClickHandler(h_search);
var h_tb_keyup = myapp.createServerHandler('procSearch')
tb_search.addKeyUpHandler(h_tb_keyup)
}
function procSearch(e) {
var app = UiApp.getActiveApplication();
// return if the key is not enter.
if((e.parameter.eventType=="keyup") && (e.parameter.keyCode != 13))
{
return app;
}
}
谢谢,我使用了createServerHandler并更新了下面的代码。