所以我碰到了一個小麻煩。我有一個頁面,其中顯示了一個複選框但被禁用(由於數據庫驅動,用戶無法更改它的值)。在此複選框下方,我有一個自動填充字段。如果來自自動完成的項目回來,我需要能夠切換禁用複選框的值。不過,目前我無法這樣做。更改已禁用複選框的值
這是我的代碼到目前爲止。
查看
...
<tr>
<td class="adminTitle">
@Html.NopLabelFor(model => model.IsSpecialOrder):
</td>
<td class="adminData">
@Html.DisplayFor(model => model.IsSpecialOrder)
@Html.HiddenFor(model => model.IsSpecialOrder)
</td>
</tr>
<tr>
<td class="adminTitle">
@Html.NopLabelFor(model => model.ItemNumber):
</td>
<td class="adminData">
@if (Model.Id > 0)
{
@Html.DisplayFor(model => model.ItemNumber)
}
else
{
@Html.EditorFor(model => model.ItemNumber)
}
</td>
</tr>
...
<script type="text/javascript">
...
$("#ItemNumber").autocomplete({
minLength: 2,
source: function (request, response) {
var itemNumber = $("#ItemNumber").val();
//Get available Products based on search parameter and map data
$.getJSON('@Url.Action("GetProductsByItemNumber", "PurchaseOrder")', { searchProduct: itemNumber }, function (data) {
for (var i = 0; i < data.length; i++) {
productData.push({ 'Id': data[i].Id, 'Name': data[i].Name, 'ItemNumber': data[i].ItemNumber, 'Description': data[i].Description,
'IsSpecialOrder': data[i].IsSpecialOrder
});
}
response($.map(data, function (item) {
return {
value: item.ItemNumber,
id: item.Id
};
}));
})
},
select: function (event, ui) {
if (ui.item.id == 0) {
//Do some house cleaning and alert user to mistake
alert("You must retry your search for a Product");
$("#Name").val("");
$("#ItemNumber").val("");
$(".ProductDescription").html("");
document.getElementById("@Html.FieldIdFor(model => model.IsSpecialOrder)").checked = false;
//$("#IsSpecialOrder").prop("checked", false);
return false;
}
//Record ProductId
$("#ProductId").val(ui.item.id);
//Fill RequestorExt with correct data
var description = GetData(productData, ui.item.id, "desc");
var name = GetData(productData, ui.item.id, "name");
var isSpecialOrder = GetData(productData, ui.item.id, "is");
$(".ProductDescription").html(description);
$("#Name").val(name);
document.getElementById("@Html.FieldIdFor(model => model.IsSpecialOrder)").checked = isSpecialOrder;
//$("#IsSpecialOrder").prop("checked", isSpecialOrder);
}
});
...
</script>
從我一直在讀什麼,禁用字段無法不啓用改變。我猜這是解決這個問題的唯一方法,但首先要確保。有任何想法嗎?
非常感謝!問題是我使用@ Html.DisplayFor的事實。當我切換到複選框類型的輸入時,它對我來說非常合適。愚蠢的DisplayFor似乎總是引起我的問題了。 – IyaTaisho 2013-04-04 17:25:15
不客氣,很高興它的工作。我總是按照html的方式來做,所以那些對剃刀語法感到頭疼的UI用戶。 – 2013-04-04 17:39:30
哈哈,是的。 Razor很好,除了有一些嚴重的缺陷時,他們在使用jQuery/javascript時不會提醒你。 – IyaTaisho 2013-04-05 15:08:50