Domanda

Sono sicuro che è stato chiesto un milione di volte, ma dopo ore di ricerca e scherzi intorno non sono stato in grado di trovare una soluzione ... Spero che qualcuno qui possa aiutarmi?

Ho un elenco di SharePoint con una colonna Pulsanti di opzione Sì / NO senza valore predefinito e una colonna Comments multiple Comments.

Quando l'utente carica il modulo, la casella Commenti dovrebbe essere nascosta. Se l'utente seleziona l'opzione "Sì", la casella Commenti dovrebbe rimanere nascosta. Quando l'utente seleziona il pulsante "No", la casella Commenti dovrebbe apparire ed essere obbligatoria, ma se l'utente seleziona nuovamente "Sì" di nuovo, la casella dovrebbe scomparire e non essere più obbligatoria.

Ho giocato con questo codice, ma devo ancora ottenere qualsiasi cosa per lavorare.

<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>
.

Se qualcuno è in grado di aiutarti sarebbe molto apprezzato. Utilizzo WSS 2007. Ho accesso a SharePoint Designer 2007, ma non infopata. Idealmente vorrei che questo sia completato attraverso l'uso di un cewp.

Grazie!

-

Codice Ho lavorato grazie a Spirity.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> 
.

È stato utile?

Soluzione

Penso che potresti essere meglio di fare del rendering laterale client.È possibile definire la funzionalità PostRender per nascondere il campo in base al valore del campo del pulsante di opzione.

Oltre a quanto sopra, potresti dare un'occhiata a questo link .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top