質問

私はそれが百万回尋ねられていると確信していますが、私は解決策を見つけることができませんでした。

デフォルト値がないyes / noラジオボタン列と、複数行コメント欄を持つSharePointリストを持っています。

ユーザーがフォームをロードすると、[コメント]ボックスは隠されています。ユーザーが「yes」オプションを選択した場合は、[コメント]ボックスは非表示のままになります。ユーザーが「いいえ」ボタンを選択すると、コメントボックスが表示され、必須であるべきですが、ユーザーが[はい]をもう一度選択すると、ボックスは消えて必須ではなくなりました。

私はこのコードで遊んでいますが、まだ働くために何かを得ていません。

<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はありません。理想的には、議員の使用を通じてこれを完了してください。

ありがとうございました!

-

コード私は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