我正在尝试获取我在页面加载时动态生成的文本框的值,并使用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的数百个文本框的值有没有办法做到这一点
答案 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