DOM and JavaScript are ok for getting dynamically adjustable content on the client side. But it's still hard to build up the pieces of the forms from the primitives and the client side validation still is hard to build up systematically. DOM doesn't introduce any new form elements, though it does make them a little more flexible.