Es una forma válida. Como no lo indicaste en el código original, supuse que los nombres del resto de campos de texto empezaban por la misma palabra, pero como veo que no es así y si quieres probar con la forma que te propuse, puedes hacerlo así:
Código Javascript
:
Ver originaldocument.addEvenListener("DOMContentLoaded", function(){
document.querySelector("#id de la tabla").addEventListener("change", function(event){
if (event.target.name.indexOf("pedir") > -1){
if (event.target.checked){
[].forEach.call(event.target.parentNode.parentNode.querySelectorAll("input"), function(input){
input.required = true;
});
}
else{
[].forEach.call(event.target.parentNode.parentNode.querySelectorAll("input"), function(input){
input.required = false;
});
}
}
}, false);
}, false);
La ventaja de hacerlo de esta manera es que puedes tener N campos de texto y todos se verán afectados; además, así mantienes limpio tu código puesto que el código JavaScript ya no estará combinado con el HTML y si decidieras hacer algún cambio más adelante, solo tendrías que modificar el código del archivo JavaScript.
Un saludo