1

在 SharePoint 2010 Foundation 中工作时,我试图为不是特定组成员的用户禁用自定义 editform.aspx 上的字段。

因此,如果当前用户不是“更改控制 - 管理员”组的成员,请禁用 CCID 字段。

我在 SPServices codeplex 讨论区找到了似乎是解决方案的方法,但它没有按预期工作。不知道我在这里缺少什么。

它确实禁用了正确的字段,但当前用户是否在指定的组中并不重要。

如果我改变这个:

if($(xData.responseXML).find("Group[Name='Change Control - Admins']").length != 1)

对此:

if($(xData.responseXML).find("Group[Name='Change Control - Admins']").length == 1)

...然后该字段不会被禁用。但是,当前用户是否在指定组中也无关紧要。

任何帮助将非常感激。

这是我的代码:

<script language="javascript" type="text/javascript" src="/CodeLibrary/jquery-1.7.2.min.js"></script>
<script language="javascript" type="text/javascript" src="/CodeLibrary/jquery.SPServices-0.7.2.min.ssl.js"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function() {
var groupName;

 $().SPServices({  
      operation: "GetGroupCollectionFromUser",  
      userLoginName: $().SPServices.SPGetCurrentUser(),  
      async: false,  
      completefunc: function(xData, Status) { 
        //if current user is not a member of this group...  
        if($(xData.responseXML).find("Group[Name='Change Control - Admins']").length != 1)  
        {  
              //...disable the following fields
              $("input[Title='CCID']").prop("disabled", "disabled");
              }  
      }  
    });  
});

function PreSaveAction() {
    $("input[Title='CCID']").removeProp("disabled");
    return true;
}
</script>
4

1 回答 1

0

我正在做一些非常相似的事情。就我而言,我正在检查以“GCP”开头的组的组成员身份,并从匹配的组中提取一些文本。真正有用的是使用console.log(). Firefox 控制台允许您深入了解您登录到控制台的对象 - IE 未提供的内容(此日志记录代码不应包含在发布代码中,特别是因为它可能在 IE 中失败)。该控制台可从Firefox的Web Developer菜单中获得。

 $(document).ready(function() {
   $().SPServices({
     operation: "GetGroupCollectionFromUser",
     userLoginName: $().SPServices.SPGetCurrentUser(),
     async: false,
     completefunc: function(xData, Status) {
        console.log(xData.responseXML);
        var $groups = $(xData.responseXML).find("Group[Name^='GCP']");
        console.log("$groups.length:" + $groups.length);
        if ($groups.length) console.log($groups.get(0).outerHTML);
        var re = /GCP ((?:[^ ]*)(?:(?! Managers) [^ *]*)*) Managers/i;
        var org = "";
        $groups.each(function(index, elt){
            var name = $(this).attr("Name");
            var matches = re.exec(name);
            if (matches){
                org = matches[1];
                return false;
            }
        });
        setOrg(org);
     }
   });
});
于 2013-05-22T00:59:25.237 回答