预填充jquery标记输入值

时间:2015-07-01 01:06:14

标签: jquery asp.net-mvc jquery-tokeninput

在我的页面中,我正在读回存储在表格中的数据。我在页面中有两个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_*属性恢复令牌输入的值。

被修改

输入令牌有两个属性id,name。 name属性是显示文本,id值是在提交期间传递给控制器​​的值。 因此,如果id和name是相同的值,则可以正常使用以下答案。

如果显示值和要提交的值不同,如何实现方案。即。例如:显示的文字是'XYZ',但提交要提交的值的时间是'123'

1 个答案:

答案 0 :(得分:1)

首先,不需要在new { data_code = Json.Encode( new { id = Model.provider_diagnosis_dtls[i].diagnosis_code, name = Model.provider_diagnosis_dtls[i].diagnosis_code })帮助器中包含TextBoxFor(),因为您需要的只是元素的value。它可以只是

@Html.TextBoxFor(m=> m.provider_diagnosis_dtls[i].diagnosis_code, new { @class = "diag" })

要预先选择一个值,您需要使用prePopulate的{​​{1}}选项设置最初显示的tokenInputid属性。你的脚本需要

name

$(document).ready(function () { $('.diag').each(function() { $(this).tokenInput('@Url.Action("SearchDiagnosis","Preapproval")', { prePopulate: [{id:$(this).val(), name: $(this).val()}], theme: 'facebook', preventDuplicates: true, searchingText: 'Searching diagnosis code...', tokenLimit: 1, hintText: 'Diagnosis Code' }); }); }); 函数循环遍历每个文本框并将插件附加到其上,并使用基于$.each()属性值的标记填充它。

修改

根据问题的编辑,如果你需要回发一个值(应该是diagnosis_code属性的值,但想要根据另一个模型属性显示不同的文本值,那么你会需要包含diagnosis_code属性。例如,如果您希望显示文本基于data-属性,那么帮助程序将是

diagnosis_desc

并将脚本修改为

@Html.TextBoxFor(m=> m.provider_diagnosis_dtls[i].diagnosis_code, new { @class = "diag" data_text = Model.provider_diagnosis_dtls[i].diagnosis_desc })