【问题标题】:getting a value within a span in jQuery在jQuery中获取一个范围内的值
【发布时间】:2012-11-06 11:26:36
【问题描述】:

这是我的html标签,

 <asp:Label runat="server" ID="rdPayOutstanding"></asp:Label><br />

我希望检索跨度标记中的值并将其显示在文本框中,我已经编写了下面的代码,但它似乎不起作用。

谁能帮忙解决我的代码有什么问题?

$(document).ready(function () {
var amount = $('#rdPayOutstanding').text().toString();
console.log(amount);
$('.textfield').val(amount);
$('.jsPayOutstanding').click(function () {
    $('.textfield').val(amount);
});

$('.jsPaySomeBalance').click(function () {
    // alert('yes');
    $('.textfield').val('');
});
});

【问题讨论】:

  • 什么是不工作的?你有什么例外吗?
  • ASP.Net 控件的 ID 与客户端 ID(在客户端呈现时的 ID)不同。在客户端检查您的文档以查看 ID 是什么并改用它,或者给它一个 CssClass 属性并使用该值。
  • 显示呈现的 html,而不是 asp。

标签: jquery textbox tags


【解决方案1】:

问题在于您使用的是 ASP.NET,当控件呈现时,ASP.NET 引擎会修改生成的 HTML 元素的 ID。

您可以添加属性ClientIDMode 来获取“正确”的id:

<asp:Label runat="server" ID="rdPayOutstanding" ClientIDMode="Static"></asp:Label><br />

另一种方法是使用属性CssClass 并改为按类选择:

<asp:Label runat="server" ID="rdPayOutstanding" CssClass="rdPayOutstanding"></asp:Label><br />

【讨论】:

  • 前提是 OP 有 VS 2010 或更高版本。
  • @freebird:ClientIDMode 不需要 VS 2010,只需要 .NET Framework 4 或更高版本。 CssClass 适用于所有版本的框架。
【解决方案2】:

尝试使用标签的客户端 id 获取值,如下所示

var amount = $('#<%=rdPayOutstanding.ClientID%>').val();
console.log(amount);

【讨论】:

    【解决方案3】:

    可以将CSS class 分配给ASP.NET Label

    <asp:Label runat="server" ID="rdPayOutstanding" class="mylabel"></asp:Label>
    

    然后你可以做这样的事情

    var amount = $('.mylabel').text();
    

    注意:

    您无法获取该标签的值的原因是其客户端 ID 在渲染时可能已更改,请尝试检查该元素并找到其 ID

    【讨论】:

    • asp:标签没有名为class的属性。
    • @SaniHuttunen 您可以将类分配给 ASP.NET 标签,因为它将与该类一起呈现为跨度。
    • 是的。但是您应该区分 ASP.NET 和 HTML 控件和属性。不混合它们。如果同时添加 classCssClass,生成的 HTML 看起来很糟糕。它将渲染class 属性两次。由于 ASP.NET 提供了适当的属性,因此您应该使用它。
    • @SaniHuttunen 好的,我现在明白了。谢谢。
    • 另一个问题是您无法从后面的代码中访问class 属性。如果您想以编程方式更改您更改CssClass 的类,那么您使用class 的位置将永远不会更改,现在您已经为元素分配了两个类。
    【解决方案4】:

    .textfield 是不是表单元素?

    $('.textfield').val(数量);

    设置元素的 value 属性,而不是文本,

    如果不是表单元素,试试

    $('.textfield').text(数量);

    或者如果你想添加标记:

    $('.textfield').html('' + 金额 + ''); // 或者 随便

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      • 2016-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多