原生表格文本过长展示问题,参考layui长文本,点击出现文本域

需要引入layui文件

效果

html代码, 记得class="layui-table"; 这要有

复制代码
    <form class="js-ajax-form" method="post" autocomplete="off">
      

        <table class="layui-table">
            <thead>
            <tr>
                <th>退烧药</th>
            </tr>
            </thead>
            <tbody>
            <foreach name="list" item="vo">
                <tr>
                    
                    <td>
                        <if condition="!empty($vo.drug_names)">
                            <if condition="mb_strlen($vo.drug_names, 'utf-8') gt 10">
                                <span class="layui-inline age-text"
                                      onclick="toggleAgeTextarea(this, '{$vo.drug_names}')">
                                    {$vo.drug_names|mb_substr=0,10}...
                                </span>
                                <textarea class="layui-textarea age-textarea"
                                          style="display: none; width: 200px; height: 40px;"
                                          readonly
                                          onblur="toggleAgeTextarea(this)"></textarea>
                                <else/>
                                <span>{$vo.drug_names}</span>
                            </if>
                        </if>
                    </td>
                     
                </tr>
            </foreach>
            </tbody>
        </table>
    </form>

js 可以弄公共部分每个页面都引入一下

复制代码
    <!-- 显示隐藏长文本框 -->
    <script>
        // 切换显示文本与文本框
        window.toggleAgeTextarea = function (element, currentValue) {
            var textarea = element.nextElementSibling;

            if (textarea.style.display === 'none') {
                // 显示文本框
                element.style.display = 'none';
                textarea.value = currentValue;
                textarea.style.display = 'block';

                // 定位文本框在点击位置
                var rect = element.getBoundingClientRect();
                textarea.style.position = 'absolute';
                textarea.style.left = rect.left + 'px';
                textarea.style.top = rect.top + 'px';
                textarea.style.zIndex = '1000';
                textarea.style.resize = 'both';
                textarea.style.overflow = 'auto';
                textarea.style.boxShadow = '0 2px 6px rgba(0,0,0,0.1)';
                textarea.style.minHeight = '70px';
                textarea.style.minWidth = '200px';

                textarea.focus();
            } else {
                // 隐藏文本框,显示文本
                var updatedValue = textarea.value;
                textarea.style.display = 'none';
                element.innerText = updatedValue.length > 10 ? updatedValue.substr(0, 10) + "..." : updatedValue;
                element.style.display = 'inline';
            }
        };

        // 监听文本框失去焦点
        document.addEventListener('blur', function (event) {
            var target = event.target;
            if (target.classList.contains('age-textarea')) {
                var textarea = target;
                var spanElement = textarea.previousElementSibling;

                // 隐藏文本框并更新显示文本
                textarea.style.display = 'none';
                var updatedValue = textarea.value;
                spanElement.innerText = updatedValue.length > 10 ? updatedValue.substr(0, 10) + "..." : updatedValue;
                spanElement.style.display = 'inline';
            }
        }, true);
    </script>
相关推荐
dorisrv7 分钟前
高性能的懒加载与无限滚动实现
前端
韭菜炒大葱13 分钟前
别等了!用 Vue 3 让 AI 边想边说,字字蹦到你脸上
前端·vue.js·aigc
StarkCoder26 分钟前
求求你,别在 Swift 协程开头写 guard let self = self 了!
前端
清妍_26 分钟前
一文详解 Taro / 小程序 IntersectionObserver 参数
前端
电商API大数据接口开发Cris32 分钟前
构建异步任务队列:高效批量化获取淘宝关键词搜索结果的实践
前端·数据挖掘·api
符方昊33 分钟前
如何实现一个MCP服务器
前端
喝咖啡的女孩34 分钟前
React useState 解读
前端
渴望成为python大神的前端小菜鸟44 分钟前
浏览器及其他 面试题
前端·javascript·ajax·面试题·浏览器
1024肥宅1 小时前
手写 new 操作符和 instanceof:深入理解 JavaScript 对象创建与原型链检测
前端·javascript·ecmascript 6
吃肉的小飞猪1 小时前
uniapp 下拉刷新终极方案
前端