下拉字段 - 第一个项目应为空白 - 对于多个字段(Sharepoint)

时间:2011-03-18 19:53:41

标签: sharepoint drop-down-menu lookup

我正在寻找在Sharepoint中的字段中使用查找时获取空白默认值的问题的解决方案。 Kit Menke的“下拉字段 - 第一项应该是空白”的解决方案对我的第一个字段的查找非常有效。但是如果在同一个列表中有更多的那个字段,我需要为每个查找字段插入一个空格(仅适用于第一个字段),我无法使其工作。我尝试添加一个新的“Web部件”并将相同的代码应用于第二个字段,但不起作用。有任何想法吗?提前致谢

2 个答案:

答案 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中它将覆盖所选的选项。