Я тоже боролся с этим. Если вы установите начальное значение, скажем, «0», а затем посмотрите DOM, используя что-то вроде Firebug, вы заметите, что DOM затем обновляется. По какой-то причине, если начальное значение установлено в null или пустую строку, DOM не обновляется, но значение фактически сохраняется.
Вы можете проверить это, предупредив val после того, как вы установили его (как предлагалось в предыдущих сообщениях)