为什么这个JavaScript无法正确更新输入值?

时间:2010-04-09 18:29:36

标签: javascript html dom

我有两个输入字段,并且没有更改其名称(即,我必须使用带括号的名称),如何使这个javascript代码有效?

<script>

    function calc_concreteprice(mainform) {
        var oprice;
        var ototal;

        oprice = (eval(mainform.['concrete[concrete][sqft]'].value) * eval(mainform.['concrete[concrete][price]'].value));
        ototal = (oprice);

        mainform.'concrete[concrete][quick_total]'.value = ototal;
    }   

</script>

这是输入区域的HTML。

<tr>
                        <td>Concrete Base Price</td>
                        <td><input type="text" name="concrete[concrete][price]" value="" class="item_mult" onBlur="calc_concreteprice(document.forms.mainform);" /> per SF <strong>times</strong> <input type="text" name="concrete[concrete][sqft]" value="" class="item_mult" onBlur="calc_concreteprice(document.forms.mainform);" /> SF</td>
                        <td> = <input type="text" name="concrete[concrete][quick_total]" value="" /></td>
                    </tr>

我知道我可以通过changing_the_input_name_with_underscores来实现它,但我需要使用括号括起名称(将表单内容存储在数组中)。

编辑:将此问题保留为社区维基,所以请根据您的需要提供代码更改!

1 个答案:

答案 0 :(得分:2)

怎么样:

mainform['estimate[concrete][sqft]'].value

等等?

另外:您似乎正在使用eval()将字符串转换为数字值。在原始用户输入上使用eval()几乎总是一个坏主意。我建议改用parseInt()和/或parseFloat()