我想添加一个服务器脚本,在填充文本框时替换特殊字符。 " onValueEdit"的信息常规状态: 只要用户编辑此窗口小部件的值,此脚本就会在客户端上运行。可以使用参数窗口小部件引用窗口小部件,窗口小部件的新值存储在newValue中。与onValueChange()不同,它仅在用户更改窗口小部件的值时运行;它不会响应绑定或以编程方式设置值而运行。
因此,我构建了以下服务器脚本,该脚本应该从文本框中获取文本,覆盖特殊字符并替换文本框中的文本。但是当我将脚本添加到" onValueEdit"事件,Google App Maker返回"功能未定义"。
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;
}
}
答案 0 :(得分:1)
如果您只想在客户端进行此更改,那么执行此操作的方法是将此代码添加到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');
...
}
使用这种方法,您不需要任何客户端代码,因为在服务器上进行的所有更改都应自动同步回客户端。