我有一个带有PeoplePicker控件的表单,我不希望用户能够编辑。
通常在这样的情况下将控件Enabled
属性设置为false
就足够了,但是我在回发时清除了值的问题(表单是非常自定义的,有很多子部分彼此互动的。)
我尝试了以下内容:
peoplePicker.EnableBrowse = false;
peoplePicker.AllowTypeIn = false;
这解决了我几乎所有的问题,用户无法输入任何值,回发时不清除该值,但是,用户能够删除当前值。
如果不将Enabled
设置为false
,如何完全阻止用户修改控件值?
非常感谢任何帮助。感谢。
编辑:忘记提到这需要在服务器端完成,表单上有很多逻辑围绕用户AD组及其共享点权限,所以javascript实际上不是一个选项。答案 0 :(得分:1)
SharePoint人员选择器基本上是具有contenteditable
属性的div。如果你可以注入javascript,这是解决方案:
http://www.stuartroberts.net/index.php/2012/03/05/quick-tip-5/
答案 1 :(得分:1)
您可以使用JavaScript / jQuery解决方案按下Backspace
和Delete
键的事件来阻止用户删除值。
在指定EnableBrowse
和AllowTypeIn
属性的同时,在PeopleEditor
控件所在的页面上添加以下脚本:
$("body").on("keydown", "span", function(e) {
if ( (e.keyCode == 8 || e.keyCode == 46) && e.target.id.indexOf("userPicker_upLevelDiv") > -1)
e.preventDefault();
});