Я пытаюсь получить значения текстового поля, которые я динамически генерировал при загрузке страницы и клонировал их с помощью jquery....
каждое текстовое поле имеет уникальный идентификатор в виде матрицы, например, текстовые поля строки 1 имеют идентификаторы textbox11, textbox12, textbox13, textbox14 и т.д. для строки 2 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
});
Убедитесь, что ваш код на С#, который изначально создает текстовые поля, и ваш jQuery, который дублирует теги, назначает уникальное имя для каждого тега. Итак, у вас есть такие теги:
<input name="textbox1" ... />
<input name="textbox2" ... />
<input name="textbox99" ... />
После того, как вы отправили форму через postback или Ajax, вы можете использовать коллекцию Request.Form для доступа к значениям текстовых полей:
foreach (string key in Request.Form.Keys)
{
if(key.StartsWith("textbox"))
{
string currentValue = Request.Form[key];
}
}
Если вы отправляете форму с помощью GET, вам нужно получить доступ к Request.QueryString
Чтобы получить ценность, которую вы используете
$('#theExactId').val()
Линейка ASP.NET не добавляет разметки на страницу. Поэтому вы должны обернуть свой контент в какой-то контейнер, чтобы вы могли его отредактировать с помощью JavaScript:
ou также следует рассмотреть возможность реорганизации всех "жестких" ссылок на контрольные идентификаторы из вашего кода JavaScript. В ASP.NET существует концепция именования контейнеров, которые будут обеспечивать уникальные идентификаторы на всей странице. Поэтому, если у вас есть элемент управления, называемый
txtName
в разделе "Содержимое" настоящее имя клиента (как видно из JavaScript) будет, например,
ct00_txtName
при использовании мастер-страниц. Префикс автоматически добавляется контейнером именования, чтобы сделать идентификатор уникальным.
К счастью, у каждого элемента управления есть свойство (серверная сторона), называемое ClientID, которое покажет фактический идентификатор, доступный на клиенте. Поэтому, если вам нужно получить доступ к элементу управления с клиентской стороны, убедитесь, что вы всегда используете свойство ClientID для получения имени. Как это:
var name = document.getElementById('<% =txtName.ClientID %>');
Если элемент имеет уникальный идентификатор, вы можете запросить этот элемент, используя формат селектора
$('#theExactId').val()
В HTML 4.01 идентификаторы не могут начинаться с числа. Если ваши идентификаторы действительно 11, 12 и т.д., Вам может понадобиться/нужно добавить хотя бы один альфа-символ.
Если вы пытались получить данные на стороне сервера, переменные были бы частью HTTP POST.
ID
каждомуTextBox
, затем используйте((TextBox)this.FindControl(someIDToLookFor)).Text
в своем коде C # для получения его значения.