の経験はありますがC#
、経験はありませんJavascript
。私が達成したいことはそれほど難しいことではありませんが、それを機能させることができません:
ラベルのテキスト プロパティをテキスト ボックスのテキスト プロパティで埋めたい。これは で行う必要がありますKeyUpEvent
。
既に作成してKeyUpEvent
動作していますが、次のコードを使用してラベルのテキスト プロパティを埋めません:
<script type="text/javascript">
$(document).ready(function ()
{
$("#@Html.FieldIdFor(model => model.Quantity)").keyup(OnQuantityChanged);
});
function OnQuantityChanged()
{
alert("onQuantityChanged event fired.")
document.getElementById('#@Html.FieldIdFor(model => model.SubTotalExclTax)').value = document.getelementById('#@Html.FieldIdFor(model => model.UnitPriceExclTax)').value
}
</script>
そこで、呼び出される関数を作成し、イベントOnQuantityChanged()
でこの関数を呼び出しますKeyUp
。関数のアラート:alert("onQuantityChanged event fired.")
呼び出されてダイアログが表示されるため、関数が呼び出されます。
@Html.FieldIdFor
コントロールのIDを取得するために、を使用しています。これは NopCommerce によって実装されていると思います。FieldIdFor
メソッドの定義は次のとおりです。
public static string FieldIdFor<T, TResult>(this HtmlHelper<T> html, Expression<Func<T, TResult>> expression)
{
var id = html.ViewData.TemplateInfo.GetFullHtmlFieldId(ExpressionHelper.GetExpressionText(expression));
// because "[" and "]" aren't replaced with "_" in GetFullHtmlFieldId
return id.Replace('[', '_').Replace(']', '_');
}
Visual Studio (2012) でブレークポイントを設定してもコードが一時停止しないため、構文エラーが発生したと思いますが、Javascript をデバッグする方法がわかりません。
以下の行には間違った構文があると思います。間違っている場合は修正してください。
document.getElementById('#@Html.FieldIdFor(model => model.SubTotalExclTax)').value = document.getelementById('#@Html.FieldIdFor(model => model.UnitPriceExclTax)').value
アップデート
ページの HTML は次のとおりです。
<table>
<tr>
<td>
@Html.NopLabelFor(model => model.UnitPriceInclTax):
</td>
<td>
@Html.EditorFor(model => model.UnitPriceInclTax)@Model.UnitPriceInclTax
</td>
</tr>
<tr>
<td>
@Html.NopLabelFor(model => model.UnitPriceExclTax):
</td>
<td>
@Html.EditorFor(model => model.UnitPriceExclTax)@Model.UnitPriceExclTax
</td>
</tr>
<tr>
<td>
@Html.NopLabelFor(model => model.Quantity):
</td>
<td colspan="2">
@Html.EditorFor(model => model.Quantity, new { id = "lblQuantity"})
</td>
</tr>
<tr>
<td>
@Html.NopLabelFor(model => model.SubTotalInclTax):
</td>
<td>
@Html.EditorFor(model => model.SubTotalInclTax)@Model.SubTotalInclTax
</td>
</tr>
<tr>
<td>
@Html.NopLabelFor(model => model.SubTotalExclTax):
</td>
<td>
@Html.EditorFor(model => model.SubTotalExclTax)@Model.SubTotalExclTax
</td>
</tr>
</table>