如何从动态生成的文本框中获取值

本文关键字:文本 获取 动态 | 更新日期: 2023-09-27 17:54:31

我试图获得文本框的值,我在页面加载上动态生成,并使用jquery克隆它们....

每个文本框都有一个矩阵形式的唯一id,例如第一行的文本框有id textbox11,textbox12,textbox13,textbox14等对于第二行textbox21,textbox22,textbox23........

是否有办法得到值…

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class product_entry : System.Web.UI.Page
{
    int count;
    protected void Page_Load(object sender, EventArgs e)
    {
        int i, j;
        for (i = 0; i < 1; i++)
        {
            TableRow tr = new TableRow();
            tr.Attributes.Add("class", "tabrow");
            for (j = 0; j <= 8; j++)
            {
                TableCell tc = new TableCell();
                if (j == 0)
                {
                    tc.Controls.Add(new LiteralControl("<Button class=remove type=button>-</button>"));
                }
                if (j == 1)
                {
                    tc.Attributes.Add("class", "sno");
                }
                if (j == 2 || j == 3 || j == 4 || j == 5 || j == 6 || j == 7 || j == 8)
                {
                    TextBox tb = new TextBox();
                    tb.Style["width"] = "98%";
                    tc.Controls.Add(tb);
                }
                tr.Controls.Add(tc);
            }
            Table1.Controls.Add(tr);
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Label2.Text = TextBox1.Text;
    for (int i = 1; i <= count; i++)
    {
        for (int j = 1; j <= 7; j++)
        {
            TextBox aa = (TextBox)Pnl.FindControl("textbox" + i + j);
            Response.Write(aa.Text);
        }
    }
    }
}

我想通过使用上面设计的循环获取使用jquery生成的数百个文本框的值有没有办法做到这一点

如何从动态生成的文本框中获取值

你可以在页面加载时为所有动态生成的文本框添加一个特定的css类,通过使用Jquery的类选择器你可以访问所有的文本框:

分别使用:i是数组中的位置,obj是您正在迭代的DOM对象(可以使用jQuery包装器$(this)访问)。

$('input.SomeClass').each(function(i,obj){
var textboxid = $(this).id;
var textboxValue = $(this).val(); // get text inside text box
});

如果一个元素有一个唯一的ID,您可以使用选择器格式

查询该元素
$('#theExactId').val()

在HTML 4.01中,id不能以数字开头。如果你的id真的是11,12,等等,你可能想要/需要在前面至少加一个alpha字符。

如果您试图在服务器端获取数据,则变量将是HTTP POST的一部分。

使用

实际获取值
$('#theExactId').val()

NET Literal不向页面添加任何标记。因此,你必须将内容包装在某个容器中,以便通过JavaScript进行编辑:

你还应该考虑重构JavaScript代码中对控件id的所有"硬"引用。在ASP。NET中有命名容器的概念,它将确保整个页面的id是唯一的。如果你有一个名为

的控件
 txtName 

在Content部分中,客户端的实际名称(从JavaScript中看到的)将是例如

 ct00_txtName 

如果使用母版页。前缀由命名容器自动添加,使id唯一。

幸运的是,每个控件都有一个名为ClientID的属性(服务器端),它将显示客户端上可用的实际id。因此,如果您需要从客户端访问控件,请确保始终使用ClientID属性来获取名称。这样的:

var name = document.getElementById('<% =txtName.ClientID %>');

确保你最初创建文本框的c#代码和复制标签的jQuery为每个标签分配一个唯一的名称。所以你有这样的标签:

<input name="textbox1" ... />
<input name="textbox2" ... />
<input name="textbox99" ... />

通过回发或Ajax提交表单后,可以使用Request。窗体集合访问文本框的值,如下所示:

foreach (string key in Request.Form.Keys)
{
     if(key.StartsWith("textbox"))
     {
         string currentValue = Request.Form[key];
     }
}

如果使用GET提交表单,则需要访问Request.QueryString