jQuery .val() 实际上没有改变值
jQuery .val() Not Actually Changing Value
更新:我觉得我可能遗漏了一条关键信息……列类型是个人或组类型。我尝试了一行文本,但效果很好。不为其他 entries/pre-filled 输入注册为 empty.But 需要使用 Person 或 Group 列来确定其他输入。使用元数据
我有一个 SP 列表,在我的第一列中,我让用户使用 AJAX.
自动填写表单
它用正确的值填充字段没问题。我的问题是,当您看到自动放置在那里的值并点击提交表单时,它仍然将该字段读取为空白并告诉我“您不能将此留空”。
您在那里看到了值,但它有点被推到文本框的左角,隐藏在输入框默认占位符文本旁边。我想知道这是否也可能导致问题?是否可以隐藏占位符文本?
如果我单击文本框,然后按任意键 (Enter/space/etc。),它会注意到自动插入的值。
在这被标记为重复之前,我已经通过 post 和线程进行了尽职调查,并找到了与此问题相似的 post,但解决方案不起作用。就像这里 post 一样:
val() doesn't trigger change() in jQuery
这是我的电话和附加信息:
$(function(){
$.ajax({
url: webUri + "/_api/sp.userprofiles.peoplemanager/GetMyProperties",
type: "GET",
headers: {
"Accept": "application/json; odata=verbose"
},
success: function(dataCurrentUser){
console.log(dataCurrentUser)
$("[title='User']").val(dataCurrentUser.d.AccountName).keyup().change();
}
})
})
我的测试代码供大家参考:
<script>
$(function () {
$.ajax({
url: _spPageContextInfo.webAbsoluteUrl + "/_api/sp.userprofiles.peoplemanager/GetMyProperties",
type: "GET",
headers: {
"Accept": "application/json; odata=verbose"
},
success: function (dataCurrentUser) {
console.log(dataCurrentUser)
var ppTitle = "people";
//$("[title='people']").val(dataCurrentUser.d.DisplayName).keyup().change();
var _PeoplePicker = $("div[title='" + ppTitle + "']");
var peoplePickerEditor = _PeoplePicker.find("[title='" + ppTitle + "']");
var _PeoplePickerTopId = _PeoplePicker.attr('id');
peoplePickerEditor.val(dataCurrentUser.d.DisplayName);
var ppobject = SPClientPeoplePicker.SPClientPeoplePickerDict[_PeoplePickerTopId];
ppobject.AddUnresolvedUserFromEditor(true);
}
})
})
</script>
博客参考:
People Picker Field Actions In SharePoint Using JavaScript (JSOM)
更新:
<script>
$(function () {
SP.SOD.executeFunc('clientpeoplepicker.js', 'SPClientPeoplePicker', function () {
$.ajax({
url: _spPageContextInfo.webAbsoluteUrl + "/_api/sp.userprofiles.peoplemanager/GetMyProperties",
type: "GET",
headers: {
"Accept": "application/json; odata=verbose"
},
success: function (dataCurrentUser) {
console.log(dataCurrentUser)
var ppTitle = "people";
//$("[title='people']").val(dataCurrentUser.d.DisplayName).keyup().change();
var _PeoplePicker = $("div[title='" + ppTitle + "']");
var peoplePickerEditor = _PeoplePicker.find("[title='" + ppTitle + "']");
var _PeoplePickerTopId = _PeoplePicker.attr('id');
peoplePickerEditor.val(dataCurrentUser.d.DisplayName);
var ppobject = SPClientPeoplePicker.SPClientPeoplePickerDict[_PeoplePickerTopId];
ppobject.AddUnresolvedUserFromEditor(true);
}
})
})
});
</script>
测试结果:
更新:我觉得我可能遗漏了一条关键信息……列类型是个人或组类型。我尝试了一行文本,但效果很好。不为其他 entries/pre-filled 输入注册为 empty.But 需要使用 Person 或 Group 列来确定其他输入。使用元数据
我有一个 SP 列表,在我的第一列中,我让用户使用 AJAX.
自动填写表单它用正确的值填充字段没问题。我的问题是,当您看到自动放置在那里的值并点击提交表单时,它仍然将该字段读取为空白并告诉我“您不能将此留空”。
您在那里看到了值,但它有点被推到文本框的左角,隐藏在输入框默认占位符文本旁边。我想知道这是否也可能导致问题?是否可以隐藏占位符文本?
如果我单击文本框,然后按任意键 (Enter/space/etc。),它会注意到自动插入的值。
在这被标记为重复之前,我已经通过 post 和线程进行了尽职调查,并找到了与此问题相似的 post,但解决方案不起作用。就像这里 post 一样: val() doesn't trigger change() in jQuery
这是我的电话和附加信息:
$(function(){
$.ajax({
url: webUri + "/_api/sp.userprofiles.peoplemanager/GetMyProperties",
type: "GET",
headers: {
"Accept": "application/json; odata=verbose"
},
success: function(dataCurrentUser){
console.log(dataCurrentUser)
$("[title='User']").val(dataCurrentUser.d.AccountName).keyup().change();
}
})
})
我的测试代码供大家参考:
<script>
$(function () {
$.ajax({
url: _spPageContextInfo.webAbsoluteUrl + "/_api/sp.userprofiles.peoplemanager/GetMyProperties",
type: "GET",
headers: {
"Accept": "application/json; odata=verbose"
},
success: function (dataCurrentUser) {
console.log(dataCurrentUser)
var ppTitle = "people";
//$("[title='people']").val(dataCurrentUser.d.DisplayName).keyup().change();
var _PeoplePicker = $("div[title='" + ppTitle + "']");
var peoplePickerEditor = _PeoplePicker.find("[title='" + ppTitle + "']");
var _PeoplePickerTopId = _PeoplePicker.attr('id');
peoplePickerEditor.val(dataCurrentUser.d.DisplayName);
var ppobject = SPClientPeoplePicker.SPClientPeoplePickerDict[_PeoplePickerTopId];
ppobject.AddUnresolvedUserFromEditor(true);
}
})
})
</script>
博客参考: People Picker Field Actions In SharePoint Using JavaScript (JSOM)
更新:
<script>
$(function () {
SP.SOD.executeFunc('clientpeoplepicker.js', 'SPClientPeoplePicker', function () {
$.ajax({
url: _spPageContextInfo.webAbsoluteUrl + "/_api/sp.userprofiles.peoplemanager/GetMyProperties",
type: "GET",
headers: {
"Accept": "application/json; odata=verbose"
},
success: function (dataCurrentUser) {
console.log(dataCurrentUser)
var ppTitle = "people";
//$("[title='people']").val(dataCurrentUser.d.DisplayName).keyup().change();
var _PeoplePicker = $("div[title='" + ppTitle + "']");
var peoplePickerEditor = _PeoplePicker.find("[title='" + ppTitle + "']");
var _PeoplePickerTopId = _PeoplePicker.attr('id');
peoplePickerEditor.val(dataCurrentUser.d.DisplayName);
var ppobject = SPClientPeoplePicker.SPClientPeoplePickerDict[_PeoplePickerTopId];
ppobject.AddUnresolvedUserFromEditor(true);
}
})
})
});
</script>
测试结果: