0

How to set /auto populate Person/ Group field in SharePoint 2013 New/ edit forms using Javascript? I tried this code and its not working in 2013

<script type="text/javascript">
//fiedName is the userfield displayName
//userName is the displayname of user you want to autofill
function SetUserFieldValue(fieldName, userName) {
        var _PeoplePicker = $("div[title='" + fieldName + "']"); //// $("[id$='ClientPeoplePicker'][title='" + fieldName + "']");  // not worked
        var _PeoplePickerTopId = _PeoplePicker.attr('id');
        var _PeoplePickerEditer = $("input[title='" + fieldName + "']");
        _PeoplePickerEditer.val(userName);
        var _PeoplePickerOject = SPClientPeoplePicker.SPClientPeoplePickerDict[_PeoplePickerTopId];
        _PeoplePickerOject.AddUnresolvedUserFromEditor(true);
    }
</script>

I can get the current logged in user, but struck to populate, resolve the user name in the person field.

2 Answers 2

2

Use JSLink on New and Edit form to set current user in people picker

    function setDefaultUser(ctx) {
        var currentUser = null;

        // Get the current form context
        var formCtx = SPClientTemplates.Utility.GetFormContextForCurrentField(ctx);

        // Get the current user
        $.ajax({
            async: false,
            headers: { "accept": "application/json; odata=verbose" },
            method: "GET",
            url: formCtx.webAttributes.WebUrl + "/_api/web/CurrentUser",
            success: function (data) {
                // Set the current user
                currentUser = data.d;
            }
        });

        // Ensure the current user exists
        if (currentUser != null) {
            var loginName = currentUser.LoginName.replace("\\", "\\\\");

            //Set user default value
            ctx.CurrentFieldValue = [{
                Description: loginName,
                DisplayText: currentUser.Title,
                EntityGroupName: "",
                EntityType: "",
                HierarchyIdentifier: null,
                IsResolved: true,
                Key: loginName,
                MultipleMatches: [],
                ProviderDisplayName: "",
                ProviderName: ""
            }];
        }

        // Return the html for the user field
        return SPClientPeoplePickerCSRTemplate(ctx);
    }
2
  • 1
    Just a note, if its office 365 you have the _spPageContextInfo.userLoginName available Oct 21, 2015 at 13:36
  • thanks DOM. I will test your solution. what worked for me is this function in the new and edit forms. function SetPeopleValue(loginName) { var peopleDiv=$('div[title="People Picker"]'); peopleDiv.html('<DIV>'+loginName+'</DIV>'); }
    – Raj
    Oct 22, 2015 at 21:24
0

Following has been tested and worked in SharePoint 2013.

function SetUserFieldValue(fieldName, userName) {
    SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function () {
        var _PeoplePicker = $("div[title='" + fieldName + "']");
        var _PeoplePickerTopId = _PeoplePicker.attr('id');
        var _PeoplePickerEditer = $("input[id$='EditorInput']");
        _PeoplePickerEditer.val(userName);
        var _PeoplePickerOject = SPClientPeoplePicker.SPClientPeoplePickerDict[_PeoplePickerTopId];
        _PeoplePickerOject.AddUnresolvedUserFromEditor(true);
    });
}
1
  • be sure to wrap your code example in backtick marks so that SE will format it as a pre-formatted code block.
    – willman
    Feb 7, 2020 at 20:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.