A quick scan reveals these.
[1] You have two inputs named q9771a (and also consequently the variable of the same name is assigned twice, but that by itself is no problem.) Main problem is that two input of the same name must be corrected, else the reference to it will not be cast to number by multiplying with 1.
[2] These are other problems, on the face of them unrelated to the NaN return problem in [1], which must be corrected.
[2.1] You have an input named "name", this _must_ be avoided. Name is a reserved word. Apart from that being reserved, if you use it, the property reference obj.name will return unexpected result.
[2.2] You have the form name "form". Again no. You pass the object this.form to the function. You see the risk you are taking.
[2.3] You rely on automatic type casting by multiplying 1 to the value of the input control. You must be aware it is not equivalent to validating them. If it is not a "numeric" string, it still gives you NaN. Furthermore, at the grand total, you use parseInt() again. This is useless. It NaN is already return in the variable, parseInt() will not help. Hence it is there without purpose and too late. It is pure inflation. You should tidy up that part of the logic.
Many other stuff sometimes related to style I would not bother to advance opinions on.