Hay bastantes ejemplos, pero no pude encontrar uno que cubriera una mesa. La intención es que el campo de entrada de la columna Comentarios se muestre como obligatorio, si se selecciona el valor Rechazado o Discutir en una columna adyacente.
Aquí hay un violín
He visto que debería agregarse un cambio a cada fila de la tabla, que llamaría a una función, pero debería haber una identificación para cada fila.
Así es como estoy construyendo la mesa, usando GAS:
function createTable(dataArray) { if (dataArray && dataArray !== undefined && dataArray.length != 0) { var option = "<select name='D1'>" + "<option value='empty'></option>" + "<option value='Approved'>Approved</option>" + "<option value='Discuss'>Discuss</option>" + "<option value='Rejected'>Rejected</option>" + "</select>"; var textBox = "<input type='text' name='comments'/>" var result = "<div class='card'><table class='table table-borderless table-hover' id='dtable'>" + "<thead style='white-space: nowrap'>" + "<tr>" + //Change table headings to match witht he Google Sheet "<th class='text-center'>Notes</th>" + "<th class='text-center'>Approval</th>" + "<th class='text-center'>Comments</th>" + "</tr>" + "</thead>" + "<tbody>"; for (var i = 0; i < dataArray.length; i++) { result += "<tr>"; for (var j = 0; j < dataArray[i].length; j++) { //Checks if Link columns has data and pushes it as a link into the table result += "<td class='align-middle' style='word-wrap: break-word;max-width: 160px;text-align:center'>" + dataArray[i][j] + "</td>"; } result += "<td class='align-middle' style='text-align:center'>" + option + "</td>"; result += "<td class='align-middle' style='text-align:center'>" + textBox + "</td>"; result += "</tr>"; } result += "</tbody></table></div><br>"; var div = document.getElementById('search-results'); div.innerHTML = result; } else { var div = document.getElementById('search-results'); div.innerHTML = "Data not found!"; return; } }¡Aprecio tu ayuda!
Agregue el evento onChange para el cuadro de selección como selectValueChanged y luego dentro del método pase el objeto actual. Usando el objeto actual, encuentre el valor seleccionado y luego realice sus operaciones.
function selectValueChanged(cur){ if(cur.value == "Rejected" || cur.value == "Discuss"){ cur.parentElement.nextElementSibling.children[0].required = true; cur.parentElement.nextElementSibling.children[0].placeholder = "this is requred"; }else{ cur.parentElement.nextElementSibling.children[0].required = false; cur.parentElement.nextElementSibling.children[0].placeholder = "Optional"; } }