使用javascript设置字段(SharePoint 2013编辑项目表单)

时间:2018-05-29 12:34:27

标签: javascript sharepoint

我正在尝试使用客户端JScript来设置字段,但是我无法这样做。有人可以看一下编码吗?

<script type="text/javascript">
function setRole() {
    if (ctx.CurrentItem["loggedonuser"].value = "i:0#.w|mickey.mouse") {
        // Setting the IMORole to Yes
        ctx.CurrentItem["IMORole"].value = "Yes";
    }
}

谢谢!

2 个答案:

答案 0 :(得分:0)

您的if条件错误。它应该是:

if (ctx.CurrentItem["loggedonuser"].value === "i:0#.w|mickey.mouse") {
        // Setting the IMORole to Yes
        ctx.CurrentItem["IMORole"].value = "Yes";
}

请注意comparison operator === =用于分配而非比较。

<强>更新

要查明值是否存在于数组中,您可以执行以下操作之一:

  1. 使用jQuery - jQuery.inArray()
    var exists = $.inArray(value, array);
  2. 示例:

    var userValue = ctx.CurrentItem["loggedonuser"].value;
    var possibleValues = ["str1", "str2"];
    
    var exists = $.inArray(userValue, possibleValues);
    if (exists) {
        ctx.CurrentItem["loggedonuser"].value = "Yes";
    }
    
    1. Javascript - Array.prototype.indexOf()
      var exists = arrValues.indexOf('Sam') > -1;
    2. 示例:

      var userValue = ctx.CurrentItem["loggedonuser"].value;
      var possibleValues = ["str1", "str2"];
      
      var exists = possibleValues.indexOf(userValue) > -1;
      if (exists) {
          ctx.CurrentItem["loggedonuser"].value = "Yes";
      }
      
      1. Javascript(ES2016) - Array.prototype.includes()
        ["Sam", "Great", "Sample", "High"].includes("Sam");
      2. 示例:

        var userValue = ctx.CurrentItem["loggedonuser"].value;
        var possibleValues = ["str1", "str2"];
        
        var exists = possibleValues.includes(userValue);
        if (exists) {
            ctx.CurrentItem["loggedonuser"].value = "Yes";
        }
        

答案 1 :(得分:0)

以下示例供您参考:

1.创建自定义列表,添加人员或组字段&#34; loggedonuser&#34;,添加是/否字段&#34; IMORole&#34;(默认值为否)。

2.将以下代码添加到editform.aspx中的脚本编辑器Web部件中。

<script src="//code.jquery.com/jquery-3.2.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
    var loggedonuser=$("input[name^='loggedonuser'][name$='ClientPeoplePicker_HiddenInput']").val();
    if(loggedonuser.indexOf("i:0#.w|mickey.mouse")!=-1){
        $("input[title='IMORole']").prop('checked', true);
    }
});
</script>

要获取当前登录名,我们还可以使用REST API来实现它。

<script src="//code.jquery.com/jquery-3.2.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
    var userid = _spPageContextInfo.userId;
    var loginName=getUserLoginName(userid);
    if(loginName=="i:0#.w|mickey.mouse"){
        $("input[title='IMORole']").prop('checked', true);
    }
});
function getUserLoginName(userId){
    var requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/web/getuserbyid(" + userId + ")";
    // execute AJAX request
    $.ajax({
        url: requestUri,
        type: "GET",
        async: false,
        headers: { "ACCEPT": "application/json;odata=verbose" },
        success: function (data) {
            loginName=data.d.LoginName;
        },
        error: function () {            
        }
    });
    return loginName;
}
</script>