Раскрывающееся поле - первый элемент должен быть пустым - Для более чем одного поля (Sharepoint) - PullRequest
2 голосов
/ 18 марта 2011

Я искал решение проблемы получения пустого значения по умолчанию при использовании поиска в поле в Sharepoint.Решение Kit Menke для вопроса «Поле раскрывающегося списка - первый элемент должен быть пустым» отлично подходит для моего первого поля с поиском.Но я не могу заставить его работать, если в одном и том же списке есть более одного поля, где мне нужно вставить пробел для каждого поля поиска (работает только для первого поля).Я попытался добавить новую «веб-часть» и применить тот же код ко второму полю, но не работает.Есть идеи?Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 19 марта 2011

Продолжение моего ответа здесь: Поле раскрывающегося списка - первый элемент должен быть пустым

Версия 2.0 позволяет добавлять имена ваших раскрывающихся списков в dropdownNames в MyCustomExecuteFunction функция.Как и в случае с первым, это будет работать только с обязательными полями поиска одиночного выбора .Кроме того, чтобы снова отредактировать страницу и обновить веб-часть редактора контента, вам может потребоваться выбрать значение для раскрывающихся списков, в противном случае вы получите ужас 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>
0 голосов
/ 14 декабря 2017

Как насчет добавления нулевого параметра в меню выбора sharepoint.Like,

$('#idOfSelectMenu').prepend('<option value="" selected>(None)</option>');

Я использовал этот подход и добавляю этот код только в NewForm.aspx, потому что в EditForm.aspx он будет переопределятьвыбранный вариант.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...