0

我使用自动完成来介绍产品的描述,并使用 javascript 函数获取 ProductID 和 Price:

<script type="text/javascript">
  $(document).ready(function () {
    $(function () {
      $("#Description").change(function () {
        $("#ProductID").val(Description_autocomplete_hidden.value);
        $("#Price").load('@Url.Action("GetPrice", "Product")', { id: parseInt($("#ProductID").val()) });
      });
    });
  });
</script>

ProductID 工作正常,正确调用了“\Product\GetPrice\4”等操作,但我无法将产品价格分配给 $(“#Price”)。

剃须刀代码:

<div class="row">
  <div class="label">@Html.Label("Product")</div>
  <div class="input">@Html.AutoComplete("Description","","Product","_Shared")</div>
</div>
<div id ="ProductID"></div>
<br />

<div class="row">
  <div class="label">@Html.Label("Price")</div>
  <div class="input">@Html.Editor("Price")</div>
</div>

Product 控制器中的 GetPrice():

public string GetPrice(int id)
{
  return unitOfWork.ProductRepository.GetByID(id).Pvp1.ToString();
}
4

3 回答 3

2

@Carlos 是对的!.load() 函数尝试设置对文本字段不起作用的内部 HTML。您需要设置 textBox 的值才能使其工作。只需更换您的线路$("#Price").load('@Url.Action("GetPrice", "Product")', { id: parseInt($("#ProductID").val()) }); });

有了这个:

    $.get('@Url.Action("GetPrice", "Product")', { id: parseInt($("#ProductID").val()) },
 function(result) {
        //set the value here    
        $("#Price").val(result);
    });
于 2012-12-18T00:22:08.150 回答
1

看这里:

http://api.jquery.com/load/

jQuery 使用浏览器的 .innerHTML 属性来解析检索到的文档并将其插入到当前文档中。

根据那里写的内容,jQueryload方法不能用于设置输入的 value 属性。

请使用这个:http ://api.jquery.com/jQuery.ajax/

它会给你更多的选择。同样在成功回调中,您可以在任何地方使用返回值,在您的情况下将值分配给输入:

$("#Price").val(data);
于 2012-12-17T23:32:22.243 回答
1
$(document).ready(function () {
    $(function () {
      $("#Description").change(function () {
        $("#ProductID").val(Description_autocomplete_hidden.value);
  $.ajax({
                        url: '@Url.Action("GetPrice", "Product")',
                        data: { id: parseInt($("#ProductID").val()) },
                        dataType: 'text',
                        type: 'get',
                        success: function (data) {
                           $("#Price").val(data); // 
                        }
                    });        
      });
    });
  });

试试这个

于 2012-12-18T03:55:04.917 回答