2013-06-28 4 views
0

На моей форме asp.net, в строке таблицы я добавить ячейки и в этих клетках добавить текстовые поля с атрибутом, как -Найти конкретную строку атрибутов JQuery

string residentId = (new GUID()).ToString(); 
string houseId = (new GUID()).ToString(); 

HtmlTableRow detailRow = new HtmlTableRow(); 
detailRow.Attributes.Add("residentId", residentId); 
detailRow.Attributes.Add("houseId", houseId); 

HtmlTableCell dataCell = new HtmlTableCell(); 

TextBox tb = new TextBox(); 
tb.Attributes.Add("componentname", "tbMoveInDate"); 

tb.Attributes.Add("onchange", "updateMoveInDate()"; 

cell.Controls.Add(tb); 
detailRow.Cells.Add(dataCell); 

с possiblility из 100+ строк, все с четкими идентификаторами, конечно.

в моей JavaScript У меня есть эта функция -

function updateMoveInDate() { 
    var MoveInDateEle = $("[componentname*='tbMoveInDate']"); 
} 

в этой точке MoveInDateEle представляет собой совокупность всех этих текстовых полей в таблице и

var currentRow = $("[componentname*='tbMoveInDate']").parent().parent(); 

дает мне все строки. но не моя конкретная строка.

Как можно получить конкретное текстовое поле, в котором я работаю, и конкретный идентификатор идентификатора и идентификатора места жительства, связанный с этим элементом управления?

+0

Вы нажав на строке вы работаете или что делает 'рабочей with' означает? Будет ли сфокусировано текстовое поле? Не могли бы вы объяснить немного больше. Спасибо – edhedges

ответ

1

Вы могли бы сделать

tb.Attributes.Add("onchange", "updateMoveInDate(this)"; 

И

function updateMoveInDate(txt) { 
    var $txt = $(txt); 
    var $row = $txt.closest('tr'); 
    var residentId = $row.attr('residentId'); 
    var houseId = $row.attr('houseId'); 
} 
+0

Perfect. Благодаря! – duckmike

2

Изменение C# кода:

tb.Attributes.Add("onchange", "updateMoveInDate(this)"; 

и функции Js как:

// obj here refers to the current textbox in the scope 
// on which the on-change event had occurred... 
function updateMoveInDate(obj) { 
    var currentRow = $(obj).closest('tr'); 
} 
+0

@edhedges Это потому, что OP использует '$ (" [имя_компьютера * = 'tbMoveInDate'] ")', который относится ко всем текстовым полям, но мы используем здесь ключевое слово this this, которое относится к элементу в текущей области, а не для полной коллекции. –

0

Попробуйте

tb.Attributes.Add("onchange", "updateMoveInDate(this)"; 

в коде позади

string residentId = (new GUID()).ToString(); 
    string houseId = (new GUID()).ToString(); 

    HtmlTableRow detailRow = new HtmlTableRow(); 
    detailRow.Attributes.Add("residentId", residentId); 
    detailRow.Attributes.Add("houseId", houseId); 

    HtmlTableCell dataCell = new HtmlTableCell(); 

    TextBox tb = new TextBox(); 
    tb.Attributes.Add("componentname", "tbMoveInDate"); 

    tb.Attributes.Add("onchange", "updateMoveInDate(this)"; 

    cell.Controls.Add(tb); 
    detailRow.Cells.Add(dataCell); 

JQuery:

function updateMoveInDate(args) { 
    var MoveInDateEle = $(args).closest('tr'); 

}