textarea高度自适应机制实现
本文描述如何在多个系统中实现textarea高度自适应。
OFBiz实现
在OFBiz中,可以通过将以下代码写入themes/rainbowstone/webapp/rainbowstone/js/rainbowstone.js实现高度自适应:
document.addEventListener("DOMContentLoaded", (event) => {
Array.from(document.getElementsByTagName("textarea")).forEach(textarea => {
textarea.style.overflowY = "hidden";
textarea.style.height = textarea.scrollHeight + "px";
textarea.addEventListener("input", () => {
textarea.style.height = "auto";
textarea.style.height = textarea.scrollHeight + "px";
});
});
});
Moqui实现
Moqui基于Quasar构建浏览器端UI控件,所以对textarea的调整也基于Quasar提供的控件属性配置。具体实现是调整runtime/template/screen-macro/DefaultScreenMacros.qvt.ftl文件中的text-area
宏,为q-input
添加autogrow
属性。
但这个方案的一个问题是,一旦添加autogrow
属性,控件高度调整为一行,用户无法区分多行和单行输入,但两者对于回车键的交互是不同的。