Условно скрыть / требовать столбец формы на основе радиопередачи

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/104294

Вопрос

Я уверен, что это было задано миллион раз, но после часов поиска и вождение вокруг я не смог найти решение ... Надеюсь, кто-то здесь может помочь мне?

У меня есть список SharePoint, который имеет столбец DES / NO RADO кнопок, без значения по умолчанию, а в столбце нескольких комментариев нескольких строк.

Когда пользователь загружает форму, окно комментариев должно быть скрыто. Если пользователь выбирает опцию «Да», окно комментариев должно оставаться скрытым. Когда пользователь выбирает кнопку «Нет», окно комментариев должно появиться и быть обязательным, но если пользователь затем выбирает «да» снова, коробка должна исчезнуть и больше не быть обязательным.

Я играл с этим кодом, но еще предстоит сделать что-нибудь на работу.

<script type="text/javascript">

  _spBodyOnLoadFunctionNames.push("hideFieldsOnStart");

  function hideFieldsOnStart() {
    var control = getTagFromIdentifierAndTitle("input","TextArea","Comments");
    control.parentNode.parentNode.parentNode.style.display="none";
    getTagFromIdentifierAndTitle ("input","RadioButtons","Materiality Assessment Completed").onchange = function() {ChangeEvent()};
  }

  function ChangeEvent() {
    var dropdown  = getTagFromIdentifierAndTitle("input","RadioButtons","Materiality Assessment Completed");
    var option = dropDown.options[dropDown.selectedIndex].text;
    var control = getTagFromIdentifierAndTitle ("input","TextArea","Comments");
    if(option == "No") {
      control.parentNode.parentNode.parentNode.style.display="";
    } else {
      control.parentNode.parentNode.parentNode.style.display="none";
    }
  }

  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];
      }
    }
    returnnull;
  }
</script>
.

Если кто-то может помочь, это будет очень оценено. Мы используем WSS 2007. У меня есть доступ к SharePoint Designer 2007, но не InfoPath. В идеале я бы хотел, чтобы это было завершено путем использования CEWP.

Спасибо!

-

код, который я работал благодаря spotivily.js

<script src="/lib/jquery-1.11.1.min.js"></script>
<script src="/lib/sputility.min.js"></script>

<script>
$(document).ready(function(){

    var ynField = SPUtility.GetSPField('Materiality Assessment Completed');
    var ynFieldValue = ynField.GetValue();

    if(ynFieldValue == "No") {
        SPUtility.GetSPField('Comments').SetValue("");
        SPUtility.GetSPField('Comments').Show();
    }
    else {
        SPUtility.GetSPField('Comments').SetValue("N/A");
        SPUtility.GetSPField('Comments').Hide();
    }

    var id = SPUtility.GetSPField('Materiality Assessment Completed').Dropdown.id;

    $('#'+id).on('change', function() {
        var ynFieldValue = ynField.GetValue();
        if (ynFieldValue == "No") {
            SPUtility.GetSPField('Comments').SetValue("");
            SPUtility.GetSPField('Comments').Show();
        }
        else {
            SPUtility.GetSPField('Comments').SetValue("N/A");
            SPUtility.GetSPField('Comments').Hide();
        }
    });

});
</script> 
.

Это было полезно?

Решение

Я думаю, что вы можете быть лучше сделать некоторые клиентские рендеринга.Вы можете определить функциональность PostRender для скрытия поля на основе значения поля радиопередачи.

Кроме того, вышеперечисленного, вы можете взглянуть на это Ссылка .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top