I have some string gadgets, and receive IDCMP_GADGETUP messages when the user has changed the contents of any of them. That works perfectly as long as the user pressed enter to complete the value change.

The gadget may become inactive without the application receiving an IDCMP_GADGETUP message. This will happen if the user performs some other operation with the mouse or if another window is activated. The gadget may still contain updated, valid information even though the IDCMP_GADGETUP message was not received.

I'm using kickstart 1.3 and workbench 1.3.2 (but this also seems to apply to later kickstart and workbench versions)

Is there any kind of workaround (on kickstart 1.3) so that I can know always know when the value of a string gadget has been changed?

One workaround, and the method I use, is to not bother with the gadget up message at all unless you explicitly want the program to carry out an action when enter is pressed. I simply use a routine to read all the gadget values in one go, and call that whenever the values are actually needed, e.g. when closing the window, clicking Save or Use etc. If you want an action to happen automatically when pressing Enter, you can call it then too, or when a gadget is activated that relies on the content of the other gadgets. No need to do it periodically (also, doing so means setting up timers and counters instead of just waiting for the next gadget event).

I was hoping there might be some sneaky way I'd overlooked I'll swap to what Daedalus suggested and rather than performing any logic up-front I'll swap to checking later and displaying a requester perhaps to explain what's wrong if there's anything that doesn't validate.

For context (and perhaps a laugh) here's what I've made so far, it's just a sudoku solver. If you sneak in high or negative values by clicking away you end-up trample surrounding memory with various not-so-great results.