0

我遇到了通过js从sharepoint人员编辑器获取输入值的问题。

通常,我们可以通过以下代码从该控件中获取值:

 var user;
    var pe = document.getElementById('<%=peStaffAccount.ClientID %>').getElementsByTagName('div');
    var i;
    var peopleEnt;
    for (i in pe) {
        if (pe[i].id != null) {
            if (pe[i].id == 'divEntityData' && pe[i].description != null) {
                peopleEnt = pe[i]
            }
        }

    }
// this is the value from this textbox but only after we click checked user
alert(peopleEnt .description)

我的问题是,当我直接在这个文本框中输入一些值时,我怎样才能得到这个值?参考下图,我的输入值..我想得到这个...... 在此处输入图像描述

4

3 回答 3

1

在 javascript 中使用人员选择器非常糟糕。您键入的实际控件实际上是一个内容可编辑的 div。它将有一个 ID,即您的控件的 ID,后跟_upLevelDiv. 您将需要抓住它,然后解析其中的内容。

您发布的代码实际上是处理解析实体时创建的嵌套 div。这些 div 包含在upLevelDiv.

如果您的控件中只有文本,如屏幕截图所示,那么它非常简单。如果你有文本和解析实体的混合,那么它会更复杂,因为 div 中会有文本和 html。

注意:以上所有内容仅适用于 IE,在其他浏览器中它使用 textarea(在 IE 中隐藏)。

于 2011-07-20T20:52:24.137 回答
0

我不确定我是否正确理解了这个问题。

您可以将 KeyPress 事件绑定到文本框,以便在单击选中的用户按钮之前在键入时实时获取文本。

    yourTextField.onKeyPress = function(){
          var txt = yourTextField.value;
    }
于 2011-07-20T05:10:11.930 回答
0

使用以下内容调查呈现的页面:

  1. 使用“查看源代码”确保 getElementById('<%=peStaffAccount.ClientID %>') 被服务器正确替换为有效的 ClientID。

  2. 使用浏览器的调试器(IE9 中的 F12,Chrome 中的开发者工具)通过该 ClientID 检查 DOM 是否存在元素

  3. 使用相同的工具,注意调试工具报告的任何脚本错误(否则浏览器会默默地忽略这些错误)。

于 2011-07-20T20:46:31.427 回答