Почему этот JavaScript не корректно обновляет входные значения? - PullRequest
0 голосов
/ 09 апреля 2010

У меня есть два поля ввода, и без изменения их имен (т.е. я должен использовать имя в скобках), как мне заставить этот код 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>

Я знаю, что могу заставить его работать, изменив_the_input_name_with_underscores, но мне нужно иметь имена в квадратных скобках (для хранения содержимого формы в массиве).

РЕДАКТИРОВАТЬ: Оставьте этот вопрос в вики сообщества, поэтому, пожалуйста, внесите свой вклад, если считаете нужным внести изменения в код!

1 Ответ

2 голосов
/ 09 апреля 2010

Как насчет:

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

и так далее?

Также: вы, похоже, используете eval(), чтобы превратить строку в числовое значение. В большинстве случаев плохая идея использовать eval() для необработанного пользовательского ввода. Я бы посоветовал использовать parseInt() и / или parseFloat().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...