The bizarre part is that the client side script populates the field with the appropriate event using that same ID and the list/record field shows the name of the event based only on that ID after
nlapiSetFieldValue('custevent_event', e.currentTarget.value);
so I know it's working client side at least