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

时间:2014-03-28 20:20:19

标签: c# jquery asp.net

我正在尝试获取我在页面加载时动态生成的文本框的值,并使用jquery克隆它们。

每个文本框都有一个矩阵形式的唯一ID,例如第一行的文本框有ids 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 geerated的数百个文本框的值有没有办法做到这一点

5 个答案:

答案 0 :(得分:1)

你可以在页面加载时为所有动态生成的文本框添加一个特定的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

});

答案 1 :(得分:0)

如果元素具有唯一ID,则可以使用选择器格式

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

在HTML 4.01中,ID不能以数字开头。如果您的ID确实是11,​​12等,您可能需要/需要预先添加至少一个字母字符。

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

答案 2 :(得分:0)

实际获取您使用的值

$('#theExactId').val()

答案 3 :(得分:0)

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

你还应该考虑重构所有&#34; hard&#34;从JavaScript代码中引用控件ID。在ASP.NET中,命名容器的概念将确保整个页面中的唯一ID。所以如果你有一个名为

的控件
 txtName 

在“内容”部分中,客户端的真实名称(如JavaScript所示)将是例如。

 ct00_txtName 

如果使用masterpages。命名容器会自动添加前缀,以使ID唯一。

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

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

答案 4 :(得分:0)

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

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

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

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

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