运行 替换 Google App Maker 中的脚本
Run replace script in Google App Maker
我想添加一个服务器脚本,用于在填充文本框时替换特殊字符。 "onValueEdit" 例程的信息指出:
每当用户编辑此小部件的值时,此脚本将 运行 在客户端上。可以使用参数 widget 来引用 widget,widget 的新值存储在 newValue 中。与 onValueChange() 不同,此 运行 仅在用户更改小部件的值时触发;它不会 运行 响应绑定或以编程方式设置值。
因此我构建了以下服务器脚本,它应该从文本框中获取文本,覆盖特殊字符并替换文本框中的文本。但是当我将脚本添加到 "onValueEdit" 事件时,Google App Maker returns "function is undefined".
function cleanup(input, output) {
if (input !== null) {
output = input.trim();
output = output.replace('ß','ss');
output = output.replace('ä','ae');
output = output.replace('ö','oe');
output = output.replace('ü','ue');
return output;
}
}
如果您只想在客户端进行此更改,正确的方法是将此代码添加到 onValueEdit
事件处理程序:
// onValueEdit input's event handler
if (newValue !== null) {
output = newValue.trim();
output = output.replace('ß','ss');
...
widget.value = output;
}
如果您需要在保存到数据库之前安全地执行此覆盖,那么您需要使用 Model Events:
// onBeforeCreate and onBeforeSave events
if (record.FieldToChange !== null) {
record.FieldToChange = record.FieldToChange.trim();
record.FieldToChange = record.FieldToChange.replace('ß','ss');
...
}
使用这种方法,您不需要任何客户端代码,因为在服务器上所做的所有更改都会自动同步回客户端。
我想添加一个服务器脚本,用于在填充文本框时替换特殊字符。 "onValueEdit" 例程的信息指出: 每当用户编辑此小部件的值时,此脚本将 运行 在客户端上。可以使用参数 widget 来引用 widget,widget 的新值存储在 newValue 中。与 onValueChange() 不同,此 运行 仅在用户更改小部件的值时触发;它不会 运行 响应绑定或以编程方式设置值。
因此我构建了以下服务器脚本,它应该从文本框中获取文本,覆盖特殊字符并替换文本框中的文本。但是当我将脚本添加到 "onValueEdit" 事件时,Google App Maker returns "function is undefined".
function cleanup(input, output) {
if (input !== null) {
output = input.trim();
output = output.replace('ß','ss');
output = output.replace('ä','ae');
output = output.replace('ö','oe');
output = output.replace('ü','ue');
return output;
}
}
如果您只想在客户端进行此更改,正确的方法是将此代码添加到 onValueEdit
事件处理程序:
// onValueEdit input's event handler
if (newValue !== null) {
output = newValue.trim();
output = output.replace('ß','ss');
...
widget.value = output;
}
如果您需要在保存到数据库之前安全地执行此覆盖,那么您需要使用 Model Events:
// onBeforeCreate and onBeforeSave events
if (record.FieldToChange !== null) {
record.FieldToChange = record.FieldToChange.trim();
record.FieldToChange = record.FieldToChange.replace('ß','ss');
...
}
使用这种方法,您不需要任何客户端代码,因为在服务器上所做的所有更改都会自动同步回客户端。