В этой статье я расскажу, как можно осуществлять проверку
выбранного значения в поле типа «Пользователь или группа». И так будем
проверять что в поле выбран пользователь отличный от текущего. В случае если он
выбрал сам себя, то ему будет выведено сообщение об этом.
Первым делом, после загрузки страницы, нам нужно получить
текущего пользователя.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | // получение текущего пользователя function getCurrentUser() { var dfd = jQuery.Deferred(); var currentUser; if (SP.ClientContext != null ) { SP.SOD.executeOrDelayUntilScriptLoaded(getUser, 'sp.js' ); } else { SP.SOD.executeFunc( 'sp.js' , null , getUser); } function getUser() { var context = new SP.ClientContext.get_current(); var web = context.get_web(); currentUser = web.get_currentUser(); context.load(currentUser); context.executeQueryAsync(onSuccessMethod, onRequestFail); } function onSuccessMethod(sender, args) { //currUser = currentUser; dfd.resolve(currentUser); } function onRequestFail(sender, args) { console.log( 'ошибка получения пользователя' + args.get_message() + '\n' + args.get_stackTrace()); dfd.reject(args); } return dfd.promise(); }; |
На выходе будет промис, который будет знать получены
асинхронные данные или нет, и какие данные получены.
Вторая функция получает значение из поля PeoplePicker.
1 2 3 4 5 6 | function getPPValue(fieldId) { var strFieldId = jQuery( "[id ^= '" + fieldId + "']" ).attr( "id" ); var field = SPClientPeoplePicker.SPClientPeoplePickerDict[strFieldId]; var ui = field.GetAllUserInfo(); return ui; }; |
Третья функция проверки, в момент нажатия на кнопку «Сохранить».
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function PreSaveAction() { var PPvalue = getPPValue( "User" ) var result = false ; currUser.done( function (res) { if (PPvalue[0] && PPvalue[0].Key == res.get_loginName()){ console.log(PPvalue[0].Key, res.get_loginName()); alert( "Выберите другого пользователя" ) result = false ; } else { // alert(res.get_loginName()) result = true ; }; }); return result; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | <script src= "/Style%20Library/Js/jquery-1.11.1.min.js" type= "text/javascript" ></script> <script src= "/Style%20Library/test/test.js" type= "text/javascript" ></script> /// содежимое test.js var currUser; _spBodyOnLoadFunctionNames.push( "WorkingWithFields" ); function WorkingWithFields() { currUser = getCurrentUser(); } // получение текущего пользователя function getCurrentUser() { var dfd = jQuery.Deferred(); var currentUser; if (SP.ClientContext != null ) { SP.SOD.executeOrDelayUntilScriptLoaded(getUser, 'sp.js' ); } else { SP.SOD.executeFunc( 'sp.js' , null , getUser); } function getUser() { var context = new SP.ClientContext.get_current(); var web = context.get_web(); currentUser = web.get_currentUser(); context.load(currentUser); context.executeQueryAsync(onSuccessMethod, onRequestFail); } function onSuccessMethod(sender, args) { //currUser = currentUser; dfd.resolve(currentUser); } function onRequestFail(sender, args) { console.log( 'ошибка получения пользователя' + args.get_message() + '\n' + args.get_stackTrace()); dfd.reject(args); } return dfd.promise(); }; // получение данные из поля PeoplePicker function getPPValue(fieldId) { var strFieldId = jQuery( "[id ^= '" + fieldId + "']" ).attr( "id" ); var field = SPClientPeoplePicker.SPClientPeoplePickerDict[strFieldId]; var ui = field.GetAllUserInfo(); return ui; }; function PreSaveAction() { var PPvalue = getPPValue( "User" ) var result = false ; currUser.done( function (res) { if (PPvalue[0] && PPvalue[0].Key == res.get_loginName()){ console.log(PPvalue[0].Key, res.get_loginName()); alert( "Выберите другого пользователя" ) result = false ; } else { // alert(res.get_loginName()) result = true ; }; }); return result; } |
Комментариев нет:
Отправить комментарий