Is it possible to update a Twig variable based on user interaction without page refresh?
I'm the developer of Charge. 

You need to go about the form setup a slightly different way. 

By design there are 2 ways to define the value for a Charge, either 


Setting the planAmount variable in your twig template, and passing it to the setCheckoutOptions/setPaymentOptions method.
Passing the allowDynamic : true setting to the setCheckoutOptions/setPaymentOptions method. With the allowDynamic option passed, you can then pass the planAmount as a hidden or visible input in your payment form, named planAmount. This can be directly updated by your users, and is explicitly designed for variable amount and charity donation form setups.


An example of this behaviour is included in the demo templates in template/charge/donation.html and is also visible here : http://demos.squarebit.co.uk/charge/donation