我在C#
中有经验,但在Javascript
中没有任何经验。 我想达到的不应该那么难,但我不能让它工作:用另一个MVC填充控件
我想用文本框的文本属性填充标签的文本属性。 这需要在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(']', '_');
}
我想我犯了一个语法错误,但不知道如何调试JavaScript,因为在Visual Studio中设置断点(2012),不会暂停代码。
我认为线下有一些不正确的语法,纠正我,如果我错了:
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>
那岂不是更清晰,让您的内容明确的标识,然后使用这些在你的jQuery选择? – paul
通常,断点对语法错误没有多大帮助。当询问操纵HTML的代码时,呈现HTML会有很大帮助。 –