【问题标题】:Updating label using jquery and code behind使用 jquery 和代码更新标签
【发布时间】:2011-02-26 07:44:47
【问题描述】:

我在页面上有一个标签,当文本框中的文本发生更改时,我正在更新标签的文本属性(使用计算值)。

我正在像这样更新标签:

$myLabel.text("123");

文本在屏幕上正确显示,但是当我尝试将文本值保存到后面代码中的对象时(当我按下按钮时)标签的文本属性是“”而不是“123”。

后面的代码:

var myLabel = myLabel.Text;
//the var myLabel is "" when it should be "123"

关于为什么会这样的任何想法?

提前致谢,

电击

【问题讨论】:

    标签: c# asp.net jquery code-behind


    【解决方案1】:

    您为什么不检查在文本框中输入的值。根据您的描述,这应该是相同的,它将可用。否则,我认为您需要发布更多代码来阐明您在做什么。

    标签文本的值需要保存在ViewState中,否则在按钮点击触发的回发时会被覆盖。

    一种选择是同时更改隐藏控件的值。对此值的任何更改都将在回发时在后面的代码中可用。

    <asp:Hidden id="hiddenLabel" runat="server" />
    

    【讨论】:

    • 因为是对 javascript 文本框中的值进行的计算。这意味着标签文本不是文本框中的内容。
    • 好的,你应该在你的问题中更清楚地说明这一点。 “你好”似乎不是一个计算值。
    • 抱歉,我已经更新了这个问题。你是对的“你好”是一个不好的例子。谢谢
    • 不用担心。我已经更新了我的答案,您可以尝试一个建议。
    【解决方案2】:

    你将 var myLabel = myLabel.Text; 放在什么函数中?

    它在 init 函数中不起作用——您需要给页面时间以从视图状态加载。最好的按钮推送事件处理程序。

    更新:

    您需要使用表单输入控件(例如 TextBox)而不是标签。标签是只读的。

    【讨论】:

    • 在 button_click 事件中
    【解决方案3】:

    标签、跨度、div 等 HTML 控件不会将它们的值发布到服务器 - 而输入会。 ASP.NET 使用 ViewState 维护控件的更改。

    当您更改服务器控件的值时,它的状态通常会保留在那里。如果您通过 JavaScript 在客户端更改值,则 ViewState 不会更改,这就是为什么在 PostBack 上您会得到原始的 Empty 值。

    【讨论】:

      【解决方案4】:

      不确定这是否是正确的方法,但我通过使用隐藏字段解决了这个问题。

      我如上更新了标签文字:

      $myLabel.text("hello");
      

      但后来我更新了隐藏字段值:

      $('#<%= hiddenField.ClientID %>').val("hello");
      

      然后我就可以在后面的代码中使用隐藏字段了:

      var myLabel = hiddenField.Value.ToString();
      

      这似乎工作正常。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-02-20
        • 2010-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-12
        • 1970-01-01
        相关资源
        最近更新 更多