Я пытаюсь использовать 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";
}
}
Спасибо!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Состояние вашего if неправильное. Так должно быть:
if (ctx.CurrentItem["loggedonuser"].value === "i:0#.w|mickey.mouse") {
// Setting the IMORole to Yes
ctx.CurrentItem["IMORole"].value = "Yes";
}
Обратите внимание на оператор сравнения===.= предназначен для присвоения, а не для сравнения.
Обновлять:
Чтобы узнать, существует ли значение в массиве или нет, вы можете сделать одно из следующих действий:
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";
}
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";
}
["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";
}
Извините, я вас не понял. Не могли бы вы добавить пример этого в вопрос?
В коде, который вы предоставили, указан только один человек. Что, если мне нужно добавить дополнительных пользователей? if (ctx.CurrentItem ["loggedonuser"]. value === "i: 0 # .w | mickey.mouse", "minnie.mouse") {// Установка IMORole на Yes ctx.CurrentItem ["IMORole"] .value = "Да";
Так это будет исправленный? <script src = "code.jquery.com/jquery-1.12.4.min.js" type = "text / javascript"> </script> <script type = "text / javascript"> $ (function () {SetAField ();}); функция SetAField () {var userValue = ctx.CurrentItem ["loggedonuser"]. значение; var possibleValues = ["я: 0 # .w | 1", "я: 0 # .w | 2", "я: 0 # .w | 3"]; var существует = $ .inArray (userValue, possibleValues); если (существует) {ctx.CurrentItem ["IMORole"]. значение = "Да"; }} функция PreSaveAction () {SetAField (); вернуть истину; } </script>
Пример ниже для справки:
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>
Сейчас тестируем, что, если он находится в массиве или у нескольких пользователей?