Использование JavaScript для установки поля (форма элемента редактирования SharePoint 2013) - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь использовать 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 голосов
/ 30 мая 2018

Пример ниже для справки:

1.Создайте пользовательский список, добавьте поле «Персона» или «Группа» «loggedonuser», добавьте поле «Да / Нет» «IMORole» (значение по умолчанию - «Нет»).

2.Добавьте приведенный ниже код в веб-часть редактора сценариев в файле editform.aspx.

<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>
0 голосов
/ 29 мая 2018

Ваше if состояние неверно.Должно быть:

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

Обратите внимание, что оператор сравнения ===.
= предназначен для назначения, а не для сравнения.

Обновление:

Чтобы узнать, существует ли значение в массиве или нет, вы можете выполнить одно из следующих действий:

  1. Использование jQuery - jQuery.inArray ()
    var exists = $.inArray(value, array);

Пример:

var userValue = ctx.CurrentItem["loggedonuser"].value;
var possibleValues = ["str1", "str2"];

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

Пример:

var userValue = ctx.CurrentItem["loggedonuser"].value;
var possibleValues = ["str1", "str2"];

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

Пример:

var userValue = ctx.CurrentItem["loggedonuser"].value;
var possibleValues = ["str1", "str2"];

var exists = possibleValues.includes(userValue);
if (exists) {
    ctx.CurrentItem["loggedonuser"].value = "Yes";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...