我遇到了通过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)
我的问题是,当我直接在此文本框中输入一些值时,如何获得此值? 参考下图,我的输入值..我想得到这个......
答案 0 :(得分:1)
使用javascript中的人员选择器非常糟糕。您键入的实际控件实际上是一个内容可编辑的div。它将有一个ID,即控件的ID,后跟_upLevelDiv
。你将需要抓住它,然后解析其中的内容。
您发布的代码实际上是处理解析实体时创建的嵌套div。这些div包含在upLevelDiv
。
如果你的屏幕截图中只显示控件中的文字,那么它非常简单。如果你有混合的文本和已解析的实体,那么它会更复杂,因为div中会有text和html。
注意:以上所有内容仅适用于IE,在其他浏览器中它使用textarea(在IE中隐藏)。
答案 1 :(得分:0)
我不确定我是否理解了这个问题。
您可以将KeyPress事件绑定到文本框,这样您就可以在键入之前实时获取文本,然后再单击选中的用户按钮。
yourTextField.onKeyPress = function(){
var txt = yourTextField.value;
}
答案 2 :(得分:0)
使用以下内容调查呈现的页面:
使用“查看来源”确保具有有效ClientID的服务器正确替换了getElementById('&lt;%= peStaffAccount.ClientID%&gt;')。
使用浏览器的调试器(IE9中的F12,Chrome中的开发人员工具)通过该ClientID检查DOM是否存在元素
使用相同的工具,监视调试工具报告的任何脚本错误(浏览器会默默忽略这些错误)。