Pregunta

Estoy seguro de que se le ha preguntado un millón de veces, pero después de las horas de búsqueda y juguete, no he podido encontrar una solución ... ¡con suerte alguien aquí puede ayudarme?

Tengo una lista de SHAREPOUNT que tiene una columna de botones de radio sí / no, sin valor predeterminado, y una columna de comentarios de línea múltiple.

Cuando el usuario carga el formulario, el cuadro de comentarios debe estar oculto. Si el usuario selecciona la opción "Sí", el cuadro de comentarios debe permanecer oculto. Cuando el usuario selecciona el botón "No", el cuadro de comentarios debe aparecer y ser obligatorio, pero si el usuario selecciona "Sí" nuevamente, la casilla debe desaparecer y ya no sea obligatoria.

He estado jugando con este código, pero aún no he tenido que trabajar cualquier cosa.

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

Si alguien puede ayudarlo, sería muy apreciado. Estamos usando WSS 2007. Tengo acceso a SharePoint Designer 2007, pero no Infopath. Idealmente, me gustaría que esto se complete a través del uso de un COWP.

¡Gracias!

-

Código que tengo trabajo gracias a 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> 

¿Fue útil?

Solución

Creo que podría ser mejor para hacer una representación lateral del cliente.Puede definir la funcionalidad PostRender para esconder el campo según el valor del campo Botón de radio.

Aparte de lo anterior, puede echar un vistazo a este Link .

Licenciado bajo: CC-BY-SA con atribución
scroll top