如何通过js从sharepoint人员编辑器文本框中获取输入值(未检查值)?

发布于 2024-11-25 10:22:34 字数 667 浏览 1 评论 0原文

我在通过 js 从共享点人员编辑器获取输入值时遇到问题。

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

 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)

我的问题是,当我直接在该文本框中输入一些值时,如何获取该值? 请参阅下图,我的输入值..我想得到这个... 在此处输入图像描述

I'm meeting a problem with getting input value from sharepoint people editor via js.

usually, we can get value from this control via below codes:

 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)

my question is, when i input some value into this textbox directly, how can I get this value?
refer to below image, my input value.. I want to get this...
enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

疯到世界奔溃 2024-12-02 10:22:34

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

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

如果控件中只有文本(如屏幕截图所示),那么这非常简单。如果您混合了文本和已解析的实体,那么情况会更复杂,因为 div 中同时存在文本和 html。

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

Working with people picker in javascript is pretty awful. The actual control that you type into is really a content editable div. It will have an ID which is the ID of your control followed by _upLevelDiv. You will need to grab that and then parse what is within.

The code you posted is actually dealing with the nested divs created when an entity is resolved. These divs are contained within upLevelDiv.

If you only have text in the control as shown in your screenshot, then it's pretty straightforward. If you have a mix of text and resolved entities then it's more complicated as there will be both text and html in the div.

NOTE: All of the above is only true for IE, in other browsers it uses a textarea (which is hidden when in IE).

一笑百媚生 2024-12-02 10:22:34

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

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

    yourTextField.onKeyPress = function(){
          var txt = yourTextField.value;
    }

I am not sure if I have understood the question properly.

You can bind KeyPress Event to the textbox, so that you can get the text real time while typing before clicking checked user button.

    yourTextField.onKeyPress = function(){
          var txt = yourTextField.value;
    }
我要还你自由 2024-12-02 10:22:34

使用以下命令来调查呈现的页面:

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

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

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

Use the following to investigate the rendered page:

  1. Use 'View Source' to make sure that getElementById('<%=peStaffAccount.ClientID %>') is correctly substituted by the server with a valid ClientID.

  2. Use the browser's debugger (F12 in IE9, Developer tools in Chrome) to inspect the DOM for the existence of the element by that ClientID

  3. Using the same tools, watch for any script error reported by the debugging tools (which are otherwise silently ignored by the browsers).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文