0

我正在使用 mvc3 asp.net,并且在我的项目中有视图。在其中一个视图中,我有 baseprice 等字段。还有另一个总字段。是否可行(通过 AJAX)动态添加这些编辑器字段值并将结果显示在另一个编辑器字段(我希望将其设置为只读)。

cshtml代码:

<div class="editor-field">
    @Html.EditorFor(model => model.Baseprice, new { @id = "Baseprice" })
    @Html.ValidationMessageFor(model => model.Baseprice)
</div>
<div class="editor-label">
    @Html.LabelFor(model => model.AmenitiesPrice)
</div>
<div class="editor-field">
    @Html.EditorFor(model => model.AmenitiesPrice, new { @id = "Amenity" })
    @Html.ValidationMessageFor(model => model.AmenitiesPrice)
</div>

<div class="editor-field">
    @Html.EditorFor(model => model.BookedAmount, new { @readonly = "readonly", @id = "BookedAmt" })
    <span runat="server" style="color:Red;" visible="false"> *</span>
    @Html.ValidationMessageFor(model => model.BookedAmount)
</div>

现在,在 cshtml 内的 Ajax 调用中,我正在尝试执行以下操作:

<script type="text/javascript" language="javascript">
    $(function () {
        $('#Amenity').blur(function () {
            alert('Hi');
        });
        $('#carpark').blur(function () {
            $('#Baseprice').val = $('#carpark').val + $('#Amenity').val; 
        });

但是,这个函数永远不会在停车场或便利设施的模糊中被调用。

我错过了什么吗?请帮忙。

4

2 回答 2

0

我明白了..我应该把ajax代码写成

$('#AmenitiesPrice').blur(function ()

并获得价值:

$('input#Baseprice').val...

于 2013-07-06T08:55:10.800 回答
0
  1. 我在您的 html 中没有看到#carpark。
  2. 要获取输入值,您需要添加括号,并且要将值设置为输入,您需要将值作为参数传递,如下所示:

    $('#Baseprice').val($('#carpark').val() + $('#Amenity').val());

  3. 您不需要添加language="javascript"到您的脚本标签。
  4. 尝试使用@Html.TextBoxForinsted of,@Html.EditorFor因为您的新 { @id = "Amenity" } 参数没有将元素的 id 设置为 Amenity,它仍然是 #AmenitiesPrice。

当你打电话时

   @Html.EditorFor(model => model.AmenitiesPrice, new { @id = "Amenity" })

您正在使用EditorFor的重载:

  public static MvcHtmlString EditorFor<TModel, TValue>(
    this HtmlHelper<TModel> html,
    Expression<Func<TModel, TValue>> expression,
    Object additionalViewData
)

new {@id = "Amenity"}将传递给代表 EditorTemplate 的 veiw 的附加视图数据也是如此。

你打电话时

 @Html.TextBoxFor(model => model.AmenitiesPrice, new { @id = "Amenity" })

您将最后一个参数作为 htmlAttributes 传递,因此您输入的 id 将更改为 #Amenity。

另一种选择是将选择器更改为#AmenititsPrice:

$('#AmenititsPrice').blur(function () {
            alert('Hi');
        });
于 2013-07-06T09:05:28.480 回答