使用jQuery设置标签文本不会影响显示的内容

时间:2014-09-18 19:32:34

标签: jquery razor label

嗯......你以前见过这个问题......认为这很容易。

我有: VS 2013 Pro MVC 5.2.2 剃刀3.2.2 Bootstrap 3.2.0 JQuery 2.1.1 jQuery UI 1.11.1 MS jQuery Unobtrusive Ajax 3.2.2 Modernizer 2.8.3 回应1.4.2

和Kendo MVC v2014.2.716 - 但不应该重要,因为我只是试图影响标签。

我有一个显示许多字段的视图,但有问题的标签是局部视图。我知道,我知道 - "为什么你使用局部视图?!?!" - 没关系,其他一切都有效。如果您能证明为什么我想要做的事情会因为使用局部视图而失败,那么我会改变它。

我要做的就是用jQuery更新标签的文本

在加载局部视图的视图中:

        @{ var vddAddress = new ViewDataDictionary(ViewData) { TemplateInfo = new TemplateInfo() { HtmlFieldPrefix = "Address" } };}
        @Html.Partial("_AddressPartial", Model.Address, @vddAddress)

ok - 在我的局部视图中,我显示了一个地址:

在所有领域中,重要的两个是:

   <div class="row">
    @Html.LabelFor(model => model.State, new { @class = "control-label col-sm-2 col-md-2 col-lg-2", id = "lbl_Address_State" })
    <div class="col-sm-4 col-md-4 col-lg-4">
        @(Html.Kendo().ComboBoxFor(model => model.State)
        .Placeholder("Select Province...")
        .DataTextField("Text")
        .DataValueField("Text")
        .Suggest(true)
        .BindTo(Model.Provinces)
        .HtmlAttributes(new { style = "width:100%" })
        )

        @Html.ValidationMessageFor(model => model.State)
    </div>
</div>


<div class="row">
    @Html.LabelFor(model => model.MailCode, new { @class = "control-label col-sm-2 col-md-2 col-lg-2", id = "lbl_Address_MailCode" })
    <div class="col-sm-4 col-md-4 col-lg-4">
        @(Html.Kendo().ComboBoxFor(model => model.MailCode)
        .Placeholder("Select Postal...")
        .DataTextField("Text")
        .DataValueField("Text")
        .Suggest(true)
        .BindTo(Model.MailCodes)
        )
        @Html.ValidationMessageFor(model => model.MailCode)
    </div>
</div>

首次显示时,标签会显示:

省/州

当我的地理信息加载并且我的国家剑道组合框是数据绑定时,数据绑定事件将触发,并且在该javascript函数中,我尝试设置标签文本。

a la:

<script type="text/javascript">

function onCountryDataBound() {
    var ddlCountry = $("#Address_Country").data("kendoComboBox");
    if (ddlCountry.selectedIndex == 1) {
        $('#lbl_Address_State').val("Province");
        $('#lbl_Address_MailCode').val("Postal Code");

    } else {
        $('#lbl_Address_State').val("State");
        $('#lbl_Address_MailCode').val("Zip");

    }
};

我在调试中跟进...

selectedIndex = -1所以在调用之后:        $(&#39;#lbl_Address_State&#39)。VAL(&#34;状态&#34);

我明白了......

    $('#lbl_Address_State')[0].innerHTML    "Province/State"    String
    $('#lbl_Address_State').val()   "State" String
    $('#lbl_Address_State') {...}   Object, (n)
        __proto__   {...}   Object, (n)
        context {...}   [Object, HTMLDocument]
        length  1   Number
        selector    "#lbl_Address_State"    String
        [0] {...}   [Object, HTMLLabelElement]

看到将在网页上显示的innerHtml仍然是&#34;省/州&#34;

注意这是在$(document).ready(function(){

之前

所以...好奇......当文件准备就绪时,我打电话给:

  $(document).ready(function () {

    var ddlCountry = $("#Address_Country").data("kendoComboBox");
    if (ddlCountry.selectedIndex == 1) {
        $('#lbl_Address_State').val("Province");
        $('#lbl_Address_MailCode').val("Postal Code");

    } else {
        $('#lbl_Address_State').val("State");
        $('#lbl_Address_MailCode').val("Zip");

    }
});

好吧,通过调试显示没有任何变化......

        $('#lbl_Address_State').val()   "State" String

        $('#lbl_Address_State')[0].innerHTML    "Province/State"    String

两者仍然相同......

因此页面继续加载,原始模型显示文本仍在那里......

知道如何影响标签文字的更改吗?

0 个答案:

没有答案