문제

나는 그것이 백만 번 물었다는 것을 확신하지만, 주위를 찾고 망쳐 놓는 시간이 지나면 해결책을 찾을 수 없었습니다 ... 희망을 누군가가 나를 도울 수 있습니까?

기본값이없는 예 / 아니오 라디오 단추 열과 여러 줄 주석 열이있는 SharePoint 목록이 있습니다.

사용자가 양식을로드하면 주석 상자가 숨겨져 있어야합니다. 사용자가 "예"옵션을 선택하면 주석 상자가 숨겨져 있어야합니다. 사용자가 "아니오"버튼을 선택하면 주석 상자가 나타나고 필수 항목이 없지만 사용자가 "예"를 선택하면 상자가 사라져야하며 더 이상 필수 항목이 없어야합니다.

나는이 코드로 노는 것이 아니라 아직 일할 것을 얻지 못했습니다.

<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 사용을 통해 완료하기를 원합니다.

고맙습니다!

-

코드는 Sputility.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