layui layer.prompt需在顶层配置中传入字符串类型value参数才能自动填充默认值,且多行文本须显式设置type: 'textarea'并用\n换行。

在Layui表格单元格编辑或自定义弹窗中调用layer.prompt时,需要让输入框自动填充当前已有的值(比如编辑已有用户名、邮箱),而不是每次都从空白开始——这要求你准确传入字符串类型的默认值,且必须放在顶层配置对象中,任何嵌套或类型错误都会导致输入框始终为空。
基础写法:直接传value参数
第一步:调用layer.prompt时,在配置对象第一层写入value属性;【value必须是字符串,哪怕原值是数字也要toString()】
第二步:确保value不是写在content、title或btn等子对象里——它只能和title、area、formType平级出现。
第三步:复制下面这段代码到浏览器控制台执行,验证是否生效:
layer.prompt({ title: '修改姓名', value: '张三' }, function(value, index, elem) { console.log(value); layer.close(index); });
表格内编辑场景:从单元格取值再填入
当点击表格某行的“编辑”按钮时,需先读取该行原始数据,再把对应字段作为value传给prompt:
方法一:使用table.on监听行工具栏事件,从data参数中提取值
table.on('tool(test)', function(obj){ var data = obj.data; layer.prompt({ title: '请输入新名称', value: data.name + '' // 强制转字符串,防undefined报错 }, function(value, index){ // 提交逻辑 layer.close(index); }); });
方法二:若用的是自定义按钮而非内置tool,可直接用jQuery获取td文本,但要注意去除空格和换行:【$(this).closest('tr').find('td:eq(1)').text().trim()】
多行文本(textarea)类型下设默认值
layer.prompt默认是单行文本框,要显示多行并带默认内容,必须显式声明type: 'textarea',否则value即使含 也不会换行显示。
第一步:配置中加入type: 'textarea'
第二步:value值中用 表示换行,例如'value: "第一行\n第二行"'(注意JS字符串里 要写成\n)
第三步:设置合理的area高度,如area: ['500px', '160px'];如果area太小,textarea会挤压成单行,容易误判为没生效











