You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript获取SharePoint多行列COL的值?解决undefined问题

解决SharePoint多行文本列值获取问题

首先,你的代码返回undefined的原因很明确:SharePoint的多行文本字段在表单中对应的HTML元素是<textarea>,而不是<input>,而且表单控件的值应该用.val()获取,不是.text()。

快速修复你的代码

把原来的代码改成这样就能拿到值了:

var res = $('textarea[title="COL"]').val();
console.log(res);
  • 用textarea代替input选择器,匹配到正确的元素
  • 用.val()获取表单控件的输入值(.text()是用来获取标签内的静态文本,不适合表单控件场景)

通用的SharePoint多行文本列值获取方法

根据不同的使用场景(表单、列表视图、代码直接读取),有不同的可靠实现方式:

1. 在New/Edit/Display表单中获取

jQuery方式

如果列的显示名是COL,直接匹配textarea的title属性即可:

// 注意:如果列名包含空格,title可能会显示为"列名 (多行文本)",需要检查页面元素确认
var multiLineVal = $('textarea[title="COL"]').val();

原生JavaScript方式

不用jQuery的话,用原生DOM选择器也能实现:

var textareaEl = document.querySelector('textarea[title="COL"]');
var multiLineVal = textareaEl ? textareaEl.value : '';

2. 在列表视图中获取多行文本列值

列表视图里的多行文本通常渲染在<td>或<div>中,你可以通过列的索引或者内部名来定位:

// 假设COL是第3列(索引从0开始计数)
var targetRow = $('tr.ms-itmhover:first'); // 获取列表第一行数据
var multiLineVal = targetRow.find('td:nth-child(3)').text().trim();

3. 用SharePoint客户端对象模型(CSOM)获取(最可靠)

如果需要从代码中直接读取列表项的多行列值,推荐用CSOM,这种方式不受页面HTML结构变化影响:

// 初始化客户端上下文
var clientContext = new SP.ClientContext.get_current();
// 获取目标列表(替换成你的列表名称)
var targetList = clientContext.get_web().get_lists().getByTitle('你的列表名称');
// 获取指定ID的列表项(替换成你要读取的列表项ID)
var listItem = targetList.getItemById(1);

// 加载列表项数据
clientContext.load(listItem);

// 执行查询并处理结果
clientContext.executeQueryAsync(
    function() {
        // 这里要用列的内部名称,不是显示名!
        var multiLineValue = listItem.get_item('COL'); 
        console.log('多行列值:', multiLineValue);
    },
    function(sender, args) {
        console.error('获取失败:', args.get_message());
    }
);

小提示:列的内部名称可以通过列表设置中列的URL查看,比如URL里的Field=COL后面的就是内部名,如果列名包含空格,内部名会是类似COL_x0020_Name的格式。

内容的提问来源于stack exchange,提问作者sweta Nayak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:14:43