2011-02-15 43 views
2

我想选择一个由asp.net服务器控件动态创建的文本框(listview)对于表格中的每一行,我需要在其上运行一些javascript功能。jquery获取表格中的文本框

下面我试图选择基于名称具有文本的文本框。有没有“更好”的方式来做到这一点?

 $('#tblNewAttendees tr').each(function() { 
    var test = $(this).find('input[name$="txtFirstName"]').val(); 
     }); 
    } 

HTML代码

<table> 
    <thead> 
    </thead> 
    <tbody> 
      <tr> 
       <td> 
        <asp:TextBox ID="txtFirstName" Text='<%#Eval("FirstName")%>'  
       runat="server" Width="80px" /> 
       </td> 
      </tr> 
    </tobdy> 
</table> 
+0

所以没有因为除了抓住文本框更好的方法选择,我在做什么,或者使用一个唯一的类? – gh9 2011-02-15 14:36:59

回答

3

将一个特定的CSS类分配给所有这些文本框,然后使用类选择器来选择这些类。

假设您已将myClass分配为CSS类值。然后用下面的选择他们 -

$('#tblNewAttendees tr').each(function() 
{ 
    var test = $(this).find('input.myClass').val(); 
}); 

原因是,据我记得,您分配给一个文本框中的名称是由ASP.NET更换新的东西,它解析文档之后。假设您有一个名为myBox的文本框。然后,页面被解析后,其名称可能会变成类似ct_1001_myBox_123或其他东西。所以最好使用CSS类在客户端选择它们。

3

你可以做以下简化它(不需要做。每个(),那么内的一个发现):

$('#tblNewAttendees tr input[name$="txtFirstName"]').each(function() { 
    var test = $(this).val(); 
} 

您可能想要改变你的标记为asp文本框提供一个类并根据类名选择,因为.net会重命名ID属性。

2

你可以给你的文本框一个唯一的类名,并使用类名作为选择器。

<asp:TextBox ID="txtFirstName" class="myClass" Text='<%#Eval("FirstName")%>' runat="server" /> 

然后在你的脚本只是由类

$('.myClass').each(function() { 
    var test = $(this).val(); 
     }); 
    }