4

当我尝试使用 .val() 获取文本框的值时,它总是显示“未定义”。下面是我正在使用的代码。请朋友们帮帮我。

<asp:TextBox runat="server" ID="txtComment" Width="650" />

<asp:Button runat="server" ID="btnSubmitComment" Text="Submit" />

$(document).ready(function () {
    $('input[id$=btnSubmitComment]').click(function () {
    var comment = $("#txtComment").val();
    alert(comment);
});
4

3 回答 3

5

asp.net 填充元素返回的id. 看起来您在 click 语句中使用它。你试过这个吗?

$(document).ready(function () {
    $('input[id$=btnSubmitComment]').click(function () {//you are using the [id$=] selector here.
    var comment = $("input[id$=txtComment]").val();//use it here too
    alert(comment);
});

或者你可以使用<%= txtComment.ClientID %>,但我个人从未使用过。我相信您需要告诉 asp.net 将 JavaScript 文件嵌入到页面中,以便将客户端id放置在适当的位置。我将寻找这个潜在解决方案的链接。

于 2012-11-12T12:33:21.533 回答
3

这很正常,当 .net 呈现 HTML 时,texbox 的 ID 会变成类似 ct_001_txtComment 的东西。

  • 您可以添加一个 css 类并从该类中获取值。
  • 或者您可以更改 web.config 中的以下选项以使页面元素中的 ids 静态

    controlRenderingCompatibilityVersion="4.0" clientIDMode="Static"

  • 或者您可以像这样从客户端 ID 获取它:<%=txtComment.ClientID%>

于 2012-11-12T12:34:53.070 回答
1

asp.net 上的一种标准方法是获取呈现的 id 并在 javascript 上将其用作:

$(document).ready(function () {
    $('#<%=btnSubmitComment.ClientID%>').click(function () {
    var comment = $('#<%=txtComment.ClientID%>').val();
    alert(comment);
});

(从您使用 ID 的那一刻起,而不是使用其他方式来选择控件,例如 css、类型等。

于 2012-11-12T12:39:20.093 回答