keep the input's value in sync with the model