【发布时间】:2015-07-01 01:06:14
【问题描述】:
在我的页面中,我正在读取存储在表格中的数据。我在页面中有两个textboxfor,附加了 jQuery 输入令牌插件。查看页面后,数据即将到来并附加插件,但是一旦附加插件,框内的现有值就会丢失并且变为空白。插件仍在工作。
@if (Model != null)
{
for (int i = 0; i < Model.provider_diagnosis_dtls.Count; i++)
{
<tr>
<td>
@Html.TextBoxFor(m => m.provider_diagnosis_dtls[i].diagnosis_code, new { data_code = Json.Encode(new { id = Model.provider_diagnosis_dtls[i].diagnosis_code, name = Model.provider_diagnosis_dtls[i].diagnosis_code }), @class = "diag" })
</td>
<td>
@Html.TextBoxFor(m => m.provider_diagnosis_dtls[i].diagnosis_desc, new { @class = "diag_desc" })
</td>
<td>
@Html.TextBoxFor(m => m.provider_diagnosis_dtls[i].diagnosis_level, new { @readonly = "readonly" })
</td>
</tr>
}
}
$(document).ready(function () {
$(".diag").tokenInput("@Url.Action("SearchDiagnosis","Preapproval")", {
theme: 'facebook',
preventDuplicates: true,
searchingText: 'Searching diagnosis code...',
tokenLimit: 1,
hintText: 'Diagnosis Code'
});
});
文本框内的代码丢失的原因是什么?我是否缺少任何特定的代码。
@Html.TextBoxFor(m=> m.provider_diagnosis_dtls[i].diagnosis_code, new { data_code = Json.Encode( new { id = Model.provider_diagnosis_dtls[i].diagnosis_code, name = Model.provider_diagnosis_dtls[i].diagnosis_code }), @class = "diag" })
这是我尝试使用 HTML5 的 data_* 属性恢复令牌输入值的地方。
已编辑
输入的token有两个属性id,name。 name 属性是显示文本,id 值是提交期间将传递给控制器的值。 因此,如果 id 和 name 是相同的值,则可以正常使用以下答案。
如果显示值和提交值不同,如何实现场景。 IE。例如:要显示的文本是“XYZ”,但提交时要提交的值是“123”
【问题讨论】:
-
不熟悉
tokenInput中的documentation,是否需要初始包含当前值-$(".diag").tokenInput("@Url.Action("SearchDiagnosis","Preapproval")", { prePopulate: [{id:1, name: 'someValue' }], theme: .....)};? -
@stephenmuecke 我不能在 jquery bcos 中使用预填充它取决于模型中的记录数
m.provider_diagnosis_dtls[i].diagnosis_code -
但是使用
prePopulate最初会显示一个值吗? -
@stephenmuecke 是的,它将在文本框中显示名称值。在您的代码中,它将是“somevalue”
-
因此,只需根据模型中的每个项目构建正确的值即可。我假设
tokenLimit: 1,意味着您只能选择一项,因此您的TextBoxFor()方法应该是new { data-code="Model.provider_diagnosis_dtls[i].diagnosis_code" },然后是prePopulate: [{id:$(this).data('code'), name: $(this).data('code' }](尽管您可能需要使用$.each()来执行此操作
标签: jquery asp.net-mvc jquery-tokeninput