Don't include id attributes in your sheet. Ids need to be unique across a page, but your HTML is duplicated for each character in the campaign. Name attributes need to start with "attr_" to be useful. You cannot set onclick handlers to call your JavaScript functions optgroup is not a tag with an optional closing tag. You're missing </optgroup>. Readonly is a meaningless attribute for an optgroup. Sheet workers cannot modify HTML attributes, so you cannot enable/disable option elements in your select. I'm not certain what goal you're actually attempting to achieve, but a skeleton of a sheet worker that would function for you is: Known forms:<br>
<input type="checkbox" name="attr_form1" value="1"> Shii-Cho<br>
<input type="checkbox" name="attr_form2" value="2"> Makashi<br>
<input type="checkbox" name="attr_form3" value="3"> Soresu<br>
<input type="checkbox" name="attr_form4" value="4"> Ataru<br>
<input type="checkbox" name="attr_form5" value="5"> Shien<br>
<input type="checkbox" name="attr_form6" value="6"> Niman<br>
<input type="checkbox" name="attr_form7" value="7"> Juyo<br>
<br><br>
Using form:<br>
<select name="attr_forms" >
<optgroup label="Using form:">
<option value="...">None</option>
<option value="1">Schii-Cho</option>
<option value="2">Makashi</option>
<option value="3">Soresu</option>
<option value="4">Ataru</option>
<option value="5">Shien</option>
<option value="6">Niman</option>
<option value="7">Juyo</option> </optgroup>
</select> <script type="text/worker"> on('change:form1 change:form2 change:form3 change:form4 change:form5 change:form6 change:form7', function() { getAttrs(['form1', 'form2', 'form3', 'form4', 'form5', 'form6', 'form7'], function(values) { _.each(values, (v, k) => values[k] = parseInt(v) || 0); // values.form1 === 1 or 0, values.form2 === 2 or 0, values.form3 === 3 or 0, etc. setAttrs({ // this isn't the result you want (I don't know what result you want), just an example of using setAttrs forms: Math.max.apply(null, _.values(values)), }); }); }); </script>