как проверить поля формы в списке sharepoint?

Я хочу проверить поля элемента списка при добавлении/редактировании и остановить операцию сохранения и предоставить информацию об ошибке, которую пользователь сделал на этой странице.

Например, если я хочу, чтобы пользователь не оставлял несколько полей заданными перед сохранением на основе определенного статуса другого поля, я не могу сделать это поле обязательным.


person sankar    schedule 25.02.2010    source источник


Ответы (2)


Используйте PreSaveAction.

Добавьте на свою страницу функцию javascript с именем PreSaveAction (лучше всего, если вы создаете настраиваемый шаблон списка и можете изменить страницу aspx, которая будет использоваться в качестве EditForm и NewForm, в противном случае попробуйте использовать веб-часть редактора содержимого или изменив главную страницу) и сделайте всю свою пользовательскую проверку оттуда.

Например, я только что использовал его в проекте, где у нас было поле с тремя процентами, которое должно было равняться 100%. Я использовал следующий javascript, и он отлично работал:

function getTagFromIdentifierAndTitle(tagName, identifier, title) {
    var len = identifier.length;
    var tags = document.getElementsByTagName(tagName);
    for (var i = 0; i < tags.length; i++) {
        var tempString = tags[i].id;
        if (tags[i].title == title && (identifier == "" || tempString.indexOf(identifier) == tempString.length - len)) {
            return tags[i];
        }
    }
    return null;
}

function PreSaveAction() {
    var top = getTagFromIdentifierAndTitle("input", "TextField", "Top %");
    var middle = getTagFromIdentifierAndTitle("input", "TextField", "Middle %");
    var bottom = getTagFromIdentifierAndTitle("input", "TextField", "Bottom %");
    var valid = (100 == parseInt(top.value) + parseInt(middle.value) + parseInt(bottom.value));
    if (!valid) {
        alert("Top %, Middle %, and Bottom % must equal 100% when added.");
    }
    return valid;
}
person Rich Bennema    schedule 25.02.2010
comment
Привет Рич! Отличные новости. Это выглядит хорошим работоспособным решением, и я попробую. - person sankar; 26.02.2010
comment
У меня было дьявольское время, чтобы выяснить, где на странице разместить тег сценария, содержащий этот JS. Этот источник сообщил поместите его прямо внутрь элемента <asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server">, и это сработало для меня. - person CrazyPyro; 15.03.2012
comment
Если тип поля - поле выбора с возможностью выбора нескольких значений, как флажки. Как выполнить ту же проверку? Мне нужно получить доступ к значению, выбранному пользователем, и выдать сообщение об ошибке, подобное предупреждению, - против другого поля spnumber. Я имею в виду, что если выбран chckbox2, мой tetxbox2 не должен быть пустым. Он должен быть заполнен, тогда только пользователь может сохранить форму. Есть идеи, как это реализовать? - person userAZLogicApps; 15.10.2015

Вам, вероятно, придется начать создавать настраиваемые элементы управления полями, чтобы это работало. Однако, как только вы вступите на путь настройки, у вас будет несколько вариантов для размышлений.

Вы можете подумать о создании пользовательской формы asp.net и кодировании ее для публикации в списке или рассмотреть формы InfoPath.

person Nat    schedule 25.02.2010