MVC 剃须刀显示元素,可以通过 JavaScript 进行编辑
MVC razor display element that can be edited by javascript
我正在使用一个表格,我希望显示文本,但也希望通过javascript更新该文本。
我可以创建一个只读文本框并让javascript对其进行编辑,但我宁愿在屏幕上显示一些文本。下面是一个示例,其中包含一个显示文本的 DisplayFor 和一个显示相同文本的只读文本框。
@for (var i = 0; i < Model.ProjectSubmissions.Count; i++)
{
<tr>
<td>
@Html.DisplayFor(modelItem => Model.ProjectSubmissions[i].ChapterNumber)
</td>
<td>
@Html.TextBox("recordsToSort[" + i + "].ChapterNumber", Model.ProjectSubmissions[i].ChapterNumber, new { @id = "recordsToSort[" + i + "].ChapterNumber", @class = "SortOrder", @readonly = "readonly" })
</td>
</tr>
}
我的javacript可以像这样编辑文本框:
$(".sortable-table tr").each(function (index, element) {
var hiddenInput = $(element).find(".SortOrder").first();
hiddenInput.val(index);
});
我可以编写将更新 DisplayFor 的 javascript 吗?或者我应该使用与Display不同的元素,因为javascript可以更新?
更新:
我想以这样的东西结束(我想保留隐藏的.SortOrder
元素。
@for (var i = 0; i < Model.ProjectSubmissions.Count; i++)
{
<tr>
<td>
<span id="@Html.Id("recordstosort[" + i + "].ChapterNumber")" class="SortOrderDisplay">@Model.ProjectSubmissions[i].ChapterNumber</span>
@Html.Hidden("recordsToSort[" + i + "].ChapterNumber", Model.ProjectSubmissions[i].ChapterNumber, new { @id = "recordsToSort[" + i + "].ChapterNumber", @class = "SortOrder" })
</td>
</tr>
}
像这样的JavaScript:
$(".sortable-table tr").each(function (index, element) {
var hiddenInput = $(element).find(".SortOrder").first();
hiddenInput.val(index);
var displayInput = $(element).find(".SortOrderDisplay").first();
if (displayInput !== 'undefined') {
displayInput.text = index;
}
});
但这行不通。
你可以使用 jQuery text 而不是 val。
@for (var i = 0; i < Model.ProjectSubmissions.Count; i++)
{
<tr>
<td class="SortOrder">
@Html.DisplayFor(modelItem => Model.ProjectSubmissions[i].ChapterNumber)
</td>
</tr>
}
那么JavaScript将是
$(".sortable-table tr").each(function (index, element) {
var hiddenInput = $(element).find(".SortOrder").first();
hiddenInput.text(index);
});
Javascript可以用来更新任何你喜欢的元素。最简单的方法可能是使用 id 属性创建一个范围,然后使用 document.getElementById.innerText
设置文本。
您可以轻松地将@Html.DisplayFor
替换为<span id="@Html.IdFor(m => m.ProjectSubmissions[i].ChapterNumber)"></span>
。
这只是一个示例,有几种方法可以更改文本客户端。
相关文章:
- 从javascript编辑asp标签
- 用于 Eclipse 的 JavaScript 编辑器插件
- 使用JQuery或Javascript编辑HTML注释文本
- 如何使用javascript编辑页面源代码
- 如何为Eclipse安装JavaScript编辑器
- 用Javascript编辑范围数据(时间序列)
- 使用 JavaScript 编辑 CSS
- 使用Javascript编辑页面后保存页面
- 使用Javascript编辑HTML表并将更改捕获为POST
- JavaScript编辑本地客户端时间
- 通过JavaScript编辑外部SVG图形
- Excel 就像 RoR 中的 JavaScript 编辑一样
- 如何通过Javascript编辑HTML中日期输入的值
- 使用 javascript 编辑 HTML 列表条目
- 如何在Visual Studio 2010/2012中将自定义文件扩展名注册到JavaScript编辑器
- 使用 jQuery/Javascript 编辑 CSS3 动画
- 如何使用 Javascript 编辑 XML 节点的数据
- 无法使用 JavaScript 编辑 html 表
- 无法使用 Javascript 编辑 CSS 样式
- 使用 JavaScript 编辑 HTML 中的每一行