我有一个单选按钮列表,点击单选按钮项目,我必须改变其标签的文本。但不知什么原因,它不管用。代码如下:

<asp:Label ID="lblVessel" Text="Vessel:" runat="server"></asp:Label>

<script language="javascript">
  $(document).ready(function() {

    $('#rblDiv input').click(function() {
      var selected = $("#rblDiv input:radio:checked").val();
      if (selected == "exportpack") {
        $('#lblVessel').text("NewText");
      }
    });
  });
</script>

当前回答

$('#<%= lblVessel.ClientID %>').html('New Text');

ASP.net Label将在浏览器中呈现为一个span。用户'html'。

其他回答

ASP。Net自动为服务器端控件生成唯一的客户端id。

改为

 $('#<%= lblVessel.ClientID %>')

在ASP。Net 4.0,你也可以将ClientIDMode属性设置为Static。

   lable value $('#lablel_id').html(value);

在JS中试试这个:

单击标签文本将其切换为另一个文本,同时选择相关的输入字段并将焦点放在相同的相关输入字段上。

<script type="text/javascript">"use strict";
  const oldLabelText="ORIGINAL BUTTON TAG TEXT";
  document.write(
    '<label id=labId for=inputId onClick="changeText(this.id)">'+oldLabelText+'</label>:<br>'+
    '<input id="inputId" value="The input value" />'
  );
</script>

<script type="text/javascript">"use strict";
  const stat=[oldLabelText,"NEW LABEL TEXT","THIRD LABEL TEXT","FOURTH LABEL TEXT"];
  let   cptr=0;

  function changeText(button_id){
     var el = document.getElementById(button_id);

     el.textContent = stat[++cptr % (stat.length)];

  // or
  //       el.firstChild.data = stat[++cptr % (stat.length)];

  // or
  //        el.innerHTML = stat[++cptr % (stat.length)];

  // or simply
  //        el.innerHTML = "the new text";
  }
</script>

试试这个:

$('[id$=lblVessel]').text("NewText");

id$=将匹配以该文本结尾的元素,这就是ASP。NET自动生成id。您可以使用span[id=$=lblVessel]使其更安全,但通常这是不必要的。

我自己经历了这一切,找到了解决办法。看ASP。NET标签服务器控件实际上被定义为一个span(而不是一个输入),因此使用.val()属性来获取/设置将不起作用。相反,你必须在使用控件的. clientid属性的同时使用span上的'text'属性。下面的代码将工作:

$("#<%=lblVessel.ClientID %>").text('NewText');