Ok I have solved it for now at least for my purposes, although I feel the solution is far from elegant. I will post and explain the solution for anyone who might be interested.
A dropdown menu is used to select an interval which is added to the current date. We want this new date to be stored in the field "due". To do this, we change the Tiddler fields within JavaScript by using $tw.wiki.setText. This is implemented in the next-date.js and is "invoked" by <<getDate>>.
For some reason, if <<getDate>> is continuously visible in the text field then everything freezes. So we need to find a way to invoke the JavaScript temporarily. This can be achieved, albeit clumsily, using <$reveal> widget detailed here:
https://tiddlywiki.com/static/RevealWidget.html. After invoking the script by showing <<getDate>>, we have to hide <<getDate>> again to prevent the freezing, and this is done by clicking the reveal button again. Due to the freezing the button must be clicked several times until "Restore Functionality" is switched back to "Set Interval".
---
\define getDate()
<$macrocall $name="next-date" title={{!!title}} interval={{!!next_interval}}/>
\end
<$select tiddler={{!!title}} field='next_interval' default={{next_interval}}>
<$list filter='[range[100]]'>
<option><$view field='title'/></option>
</$list>
</$select>
<$reveal type="nomatch" state="$:/state/SampleReveal2" text="show">
<$button set="$:/state/SampleReveal2" setTo="show">Set Interval </$button>
</$reveal>
<$reveal type="match" state="$:/state/SampleReveal2" text="show">
<$button set="$:/state/SampleReveal2" setTo="hide">Restore Functionality</$button>
<<getDate>>
</$reveal>