如何在Suitelet表单提交后保留textarea字段的值?
解决Suitelet提交后TEXTAREA值丢失的问题
1. Suitelet端:添加输入值回显逻辑
当前代码未将用户提交的cidn参数赋值给textarea字段,导致页面刷新后值丢失。需要在创建textarea字段后,将解码后的参数值设置为字段默认值,确保特殊字符(换行、空格、逗号等)正确显示:
if (context.request.method === 'GET') { var form = serverWidget.createForm({ title: 'CON Numbers', hideNavBar: false }); form.clientScriptFileId = CLIENT_SCRIPT_FILE_ID; var pageId = parseInt(context.request.parameters.page) || 0; var scriptId = context.request.parameters.script; var deploymentId = context.request.parameters.deploy; // 解码URL参数,还原含特殊字符的原始输入 var cidnParam = context.request.parameters.cidn ? decodeURIComponent(context.request.parameters.cidn) : ''; var download = context.request.parameters.download; var sublist = form.addSublist({ id: 'custpage_table', type: serverWidget.SublistType.LIST, label: 'Sales Order Items' }); sublist.addField({ id: 'id', label: 'Internal ID', type: serverWidget.FieldType.TEXT }); var cidnField = form.addField({ id: 'custpage_enter_cidn', label: 'Enter CON Numbers', type: serverWidget.FieldType.TEXTAREA }); // 设置默认值,回显用户提交的原始内容 cidnField.defaultValue = cidnParam; form.addSubmitButton({ id: 'custpage_submit', label: 'Submit' }); context.response.writePage(form); }
2. 客户端脚本:正确传递含特殊字符的输入值
在saveRecord方法中,需对textarea的原始值进行URL编码,避免换行、特殊字符在传递过程中被破坏:
function saveRecord() { // 获取textarea的原始输入值 var cidnValue = document.getElementById('custpage_enter_cidn').value; // 编码值,确保所有特殊字符能正确传递 var encodedCidn = encodeURIComponent(cidnValue); // 构造GET请求URL,拼接参数 var scriptId = nlapiGetContext().getScriptId(); var deployId = nlapiGetContext().getDeploymentId(); var targetUrl = nlapiResolveURL('SUITELET', scriptId, deployId, true) + '&cidn=' + encodedCidn; // 跳转回Suitelet页面 window.location.href = targetUrl; return false; // 阻止默认表单提交行为 }
核心注意点
- 编码/解码配对:使用
encodeURIComponent编码输入值,再用decodeURIComponent解码参数,能完整保留换行、空格、逗号、竖线等所有特殊字符。 - 回显时机:在GET请求分支中设置textarea的
defaultValue,确保页面刷新后直接显示用户的原始输入内容。
内容的提问来源于stack exchange,提问作者Maira S
相关产品推荐
相关产品推荐

