SharePoint文本列使用jQuery替换分号为换行求助
Hey there! 作为刚接触SharePoint时也踩过不少坑的过来人,我来帮你搞定这个文本格式化的需求~
核心思路
我们要做的就是用jQuery定位到目标textarea字段,然后把文本里的;(分号加前后空格)替换成换行符。如果你的分隔符格式有变化(比如分号前后空格不固定),还可以用正则来兼容更多情况。
代码实现(针对新建/编辑表单的textarea)
首先要确保jQuery已经加载(SharePoint默认包含jQuery,旧版本可能需要自行引入),然后用下面的代码:
// 等待SharePoint页面完全加载 $(document).ready(function() { // 替换成你实际的textarea列的显示名称 var targetTextarea = $("textarea[title='你的多行文本列名称']"); if (targetTextarea.length) { // 获取原始文本 var originalContent = targetTextarea.val(); // 全局替换" ; "为换行符\n var formattedContent = originalContent.replace(/ ; /g, '\n'); // 把格式化后的内容放回textarea targetTextarea.val(formattedContent); } });
兼容更多分隔符情况
如果你的文本里的分号前后空格不固定(比如有时候是; text或者text ;),可以把正则改成/\s*;\s*/g,这样不管分号前后有没有空格都能匹配:
var formattedContent = originalContent.replace(/\s*;\s*/g, '\n');
如果是列表视图里的文本格式化
要是你想在列表视图里把显示的多行文本改成每行一个(而不是修改表单里的输入),可以用下面的代码:
$(document).ready(function() { // 遍历所有列表项里的文本内容(.ms-list-item-body是SharePoint列表项内容的默认类) $(".ms-list-item-body").each(function() { var originalText = $(this).text(); // 替换分号为<br>实现页面上的换行 var formattedText = originalText.replace(/ ; /g, '<br>'); $(this).html(formattedText); }); });
小提示
- 如果你找不到textarea的定位方式,可以打开浏览器的开发者工具(F12),选中目标textarea,查看它的
title属性或者id,调整选择器即可。 - 如果是SharePoint Online,有时候需要用
SP.SOD.executeFunc来确保脚本在SharePoint脚本加载完成后执行,比如:
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function() { // 上面的代码放在这里 });
如果还有问题,比如定位不到元素或者替换不生效,可以告诉我你的具体场景(比如是在新建表单、编辑表单还是列表视图),我再帮你调整~
内容的提问来源于stack exchange,提问作者O. Morotti
相关产品推荐
相关产品推荐

