You can get the User Object from the people picker in SharePoint. Since this example is in C#, I would suggest putting this into an EventReciever for the NewItem.aspx/EditItem.aspx pages and overridding the default submit for the page. Hide these fields on the form, and just have the information loaded once the new/edit form is saved. You can show it in the view of the list. Try this example below to get the information. The code will change just a bit for update, but you should be able to do that:
For a new item:
private void GetUserInfo() {
string siteUrl = SPContext.Current.Web.Url;
PeopleEditor myPicker = myPickerId; //ASP ID Given to your PeoplePicker on the page
try
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite spSite = new SPSite(siteUrl))
{
using (SPWeb spWeb = spSite.Open())
{
var picker = spWeb.EnsureUser(myPicker.CommaSepatartedAccounts);
String userName = picker.Name; //this is going to be the UserProfile Name
String userEmail = picker.Email;
String userID = picker.ID;
SPList spList = spWeb.List["YourListName"];
SPListItem spListItem = spList.Items.Add();
try
{
spListItem["Name"] = userName;
spListItem["ID"] = userID;
spListItem["Email"] = userEmail;
}
catch (Exception ex)
{
Console.WriteLine(ex.InnerException);
}
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.InnerException);
}
}
You could try this on the client end. I hae only been able to pull the innerHTML from the PeoplePicker object in JavaScript. I am not sure it is going to have all of the information you are looking for. you cna get it this way on the client end:
var peoplePicker = $("div[title$='People Picker']");
peoplePickerValue = peoplePicker[0].innerHTML;
You can loop through that and see what you are going to be able to pull from it. Hope this at least gives you a good ides on what to do if it does not work like you are wanting to. Good luck!