问题描述
我在 FileMaker 解决方案上使用 summernotes html 表单来编写电子邮件。最初我有一个保存按钮将 html uri 传输到一个字段中,然后用客户端脚本通过电子邮件发送。然而,用户(和我......)不喜欢必须点击“保存”然后“发送”。
我想知道是否有人对如何自动执行此操作有任何想法。我尝试将保存功能设置为 1 秒重复一次,但是,这会停止输入并删除光标。我正在考虑以某种方式通过 json 提取数据,或者理想情况下可以通过我的 FileMaker“发送”脚本对其进行查询?
<html lang="en">
<head>
<Meta charset="UTF-8">
<title>HTML Editor</title>
<!-- include libraries(jQuery,bootstrap) -->
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<!-- include summernote css/js -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/summernote.min.js"></script>
<!-- <link href="http://netdna.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.css" rel="stylesheet">
<link href="http://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.11/summernote.css" rel="stylesheet"> -->
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/summernote.min.css" rel="stylesheet">
<link href="https://stackpath.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<script>
var intervalID;
function autoSave() {
intervalID = setInterval(saveText,1000);
}
function saveText() {
//$('#summernote').summernote('code','code');
//window.alert('save changes');
/* Prep the URL to use for the hand-off to FM. */
var fullURL = '[[SAVEURL]]¶m=' + encodeURIComponent ($('#summernote').summernote('code'));
/* Send the data to FM. */
window.location = fullURL;
return false;
}
</script>
</head>
<body onload ="autoSave();">
<div id="summernote">[[CONTENT]]</div>
<script>
}
$(document).ready(function() {
$('#summernote').summernote({
height: 300,tabsize: 2,toolbar: [
// [groupName,[list of button]]
['style',['style','bold','italic','underline','clear']],//['font',['strikethrough','superscript','subscript']],//['fontsize',['fontsize']],['color',['color']],//['para',['ul','ol','paragraph']],//['height',['height']],['insert',['link']],//['insert',['link','hr','table']],//['misc',['codeview']],['mybutton',['save']]
],buttons: {save: SaveButton}
});
});
</script>
</body>
</html>
解决方法
不要将编码的 HTML 作为参数传递到 URL (¶m=...) - 这会导致页面重新加载并因此导致焦点丢失 - 尝试将参数作为锚点传递 (#... ).
就像页面不会重新加载一样,焦点应该保持不变。当然,您必须相应地调整您的参数读取代码。
或者,如果您有 FileMaker 19,您可以使用 FileMaker.PerformScript 或 FileMaker.PerformScriptWithOption 函数将值直接传递给脚本。