我正在寻找在Sharepoint中的字段中使用查找时获取空白默认值的问题的解决方案。 Kit Menke的“下拉字段 - 第一项应该是空白”的解决方案对我的第一个字段的查找非常有效。但是如果在同一个列表中有更多的那个字段,我需要为每个查找字段插入一个空格(仅适用于第一个字段),我无法使其工作。我尝试添加一个新的“Web部件”并将相同的代码应用于第二个字段,但不起作用。有任何想法吗?提前致谢
答案 0 :(得分:3)
在此处回答我的回答:Dropdown field - first item should be blank
版本2.0允许您将下拉列表的名称添加到dropdownNames
函数中的MyCustomExecuteFunction
。与第一个一样,这仅适用于必需的单选选择查找字段。此外,为了再次编辑页面并更新内容编辑器Web部件,您可能必须为下拉列表选择一个值,否则会得到可怕的An unexpected error has occurred.
。祝好运! :d
<script type="text/javascript">
function GetDropdownByTitle(title) {
var dropdowns = document.getElementsByTagName('select');
for (var i = 0; i < dropdowns.length; i++) {
if (dropdowns[i].title === title) {
return dropdowns[i];
}
}
return null;
}
function GetOKButtons() {
var inputs = document.getElementsByTagName('input');
var len = inputs.length;
var okButtons = [];
for (var i = 0; i < len; i++) {
if (inputs[i].type && inputs[i].type.toLowerCase() === 'button' &&
inputs[i].id && inputs[i].id.indexOf('diidIOSaveItem') >= 0) {
okButtons.push(inputs[i]);
}
}
return okButtons;
}
function AddValueToDropdown(oDropdown, text, value, optionnumber){
var options = oDropdown.options;
var option = document.createElement('OPTION');
option.appendChild(document.createTextNode(text));
option.setAttribute('value',value);
if (typeof(optionnumber) == 'number' && options[optionnumber]) {
oDropdown.insertBefore(option,options[optionnumber]);
}
else {
oDropdown.appendChild(option);
}
oDropdown.options.selectedIndex = 0;
}
function WrapClickEvent(element, newFunction) {
var clickFunc = element.onclick;
element.onclick = function(event){
if (newFunction()) {
clickFunc();
}
};
}
function MyCustomExecuteFunction() {
// **** ADD YOUR REQUIRED SINGLE SELECT FIELDS HERE ***
var dropdownNames = [
'Large Lookup Field',
'My Dropdown Field'
];
var dropdownElements = [];
for (var d = 0; d < dropdownNames.length; d++) {
// find the dropdown
var dropdown = GetDropdownByTitle(dropdownNames[d]);
// comment this IF block out if you don't want an error displayed
// when the dropdown can't be found
if (null === dropdown) {
alert('Unable to get dropdown named ' + dropdownNames[d]);
continue;
}
AddValueToDropdown(dropdown, '', '', 0);
// collect all of our dropdowns
dropdownElements.push(dropdown);
}
// add a custom validate function to the page
var funcValidate = function() {
var isValid = true;
var message = "";
for (var d = 0; d < dropdownElements.length; d++) {
if (0 === dropdownElements[d].selectedIndex) {
// require a selection other than the first item (our blank value)
if (isValid) {
isValid = false;
} else {
message += "\n"; // already had one error so we need another line
}
message += "Please choose a value for " + dropdownNames[d] + ".";
}
}
if (!isValid) {
alert(message);
}
return isValid;
};
var okButtons = GetOKButtons();
for (var b = 0; b < okButtons.length; b++) {
WrapClickEvent(okButtons[b], funcValidate);
}
}
_spBodyOnLoadFunctionNames.push("MyCustomExecuteFunction");
</script>
答案 1 :(得分:0)
如何将null选项添加到sharepoint.Like的选择菜单中,
$('#idOfSelectMenu').prepend('<option value="" selected>(None)</option>');
我使用这种方法并仅在NewForm.aspx中附加此代码,因为在EditForm.aspx中它将覆盖所选的选项。