私は Javascript/JQuery を初めて使用するので、単純なものが欠けている場合は申し訳ありません。数量と単価から合計を計算し、合計フィールドに結果を入力するボタンを作成しようとしています。これは、VS2010 を使用して ASP.NET MVC3 で行われます。
私のコードは、SpoilageQuantity と SpoilageUnitPrice の値を正常に取得しているように見えますが、SpoilageTotalPrice の値の設定に失敗しています。エラーは、関数の結果に値を代入しようとしていると言っていますが、私の理解では、val() を使用してフォーム フィールドの値を取得および設定できます。修正または提案?
VS2010 ビュー:
<div class="editor-label">
@Html.LabelFor(model => model.SpoilageQuantity)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.SpoilageQuantity)
@Html.ValidationMessageFor(model => model.SpoilageQuantity)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.SpoilageUnitPrice)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.SpoilageUnitPrice)
@Html.ValidationMessageFor(model => model.SpoilageUnitPrice)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.SpoilageTotalPrice)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.SpoilageTotalPrice)
@Html.ValidationMessageFor(model => model.SpoilageTotalPrice)
<input type="button" value="Calculate" onclick="calculateTotal()" />
</div>
JS ファイル:
function calculateTotal() {
// calculate total spoilage price from unit price and quantity
var totalprice = $('#SpoilageQuantity').val() * $('#SpoilageUnitPrice').val();
totalprice = totalprice.toFixed(2);
$('#SpoilageTotalPrice').val(totalprice);
}
レンダリングされた HTML:
<div class="editor-label">
<label for="SpoilageQuantity">Item Quantity</label>
</div>
<div class="editor-field">
<input class="text-box single-line" data-val="true" data-val-number="The field Item Quantity must be a number." data-val-required="Quantity of item lost is required." id="SpoilageQuantity" name="SpoilageQuantity" type="text" value="0.00" />
<span class="field-validation-valid" data-valmsg-for="SpoilageQuantity" data-valmsg-replace="true"></span>
</div>
<div class="editor-label">
<label for="SpoilageUnitPrice">Unit Price</label>
</div>
<div class="editor-field">
<input class="text-box single-line" data-val="true" data-val-number="The field Unit Price must be a number." data-val-required="Unit price is required." id="SpoilageUnitPrice" name="SpoilageUnitPrice" type="text" value="0.00" />
<span class="field-validation-valid" data-valmsg-for="SpoilageUnitPrice" data-valmsg-replace="true"></span>
</div>
<div class="editor-label">
<label for="SpoilageTotalPrice">Total Price</label>
</div>
<div class="editor-field">
<input class="text-box single-line" data-val="true" data-val-number="The field Total Price must be a number." data-val-required="The Total Price field is required." id="SpoilageTotalPrice" name="SpoilageTotalPrice" type="text" value="0.00" />
<span class="field-validation-valid" data-valmsg-for="SpoilageTotalPrice" data-valmsg-replace="true"></span>
<input type="button" value="Calculate" onclick="calculateTotal()" />
</div>
エラーメッセージ:
Microsoft JScript runtime error: Cannot assign to a function result
編集:jsファイル全体:
/* Copyright 2012 Tom Barrett
This file is part of PFC Logs.
PFC Logs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
PFC Logs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with PFC Logs. If not, see <http://www.gnu.org/licenses/>.
*/
function autoFocus() {
// Auto-focus on the first text field upon page load.
$("input[type=text]").first().focus();
}
function calculateTotal() {
// calculate total from quantity & unit price
var totalprice = $('#SpoilageQuantity').val() * $('#SpoilageUnitPrice').val();
totalprice = totalprice.toFixed(2);
$("#SpoilageTotalPrice").val(totalprice);
}