2017-01-11 3 views
1

Я искал какое-то время, но я не мог найти ответ на мою ситуациюКак получить идентификатор текстового поля внутри Gridview с помощью JQuery?

Это моя проблема:

У меня есть Textbox внутри Gridview так:

 <asp:TemplateField HeaderText="<%$ Resources:DCAAStrategicManagement, obj_lblStandardWeight %>" ItemStyle-HorizontalAlign="Center"> 
      <ItemTemplate> 
       <asp:TextBox runat="server" ID="txtStandardWeight" onkeypress="return onlyNumbers();" Text='<%# Eval("StandardWeight") %>'></asp:TextBox> 
      </ItemTemplate> 
     </asp:TemplateField> 

И мне нужно, чтобы установить событие размытости на этом TextBox используя JQuery.

Это моя попытка добиться того, что:

$("input[id*='<%=txtStandardWeight.ClientID %>']").blur(function() { 
    Read(); 
    var currentSum = document.getElementById('<%=hidden.ClientID %>').value; 
    var oldLabelData = $('#<%= lblStandardWeightCurrently.ClientID %>').value; 
    var newLabelData = oldLabelData + currentSum; 
    $('#<%= lblStandardWeightCurrently.ClientID %>').value(newLabelData); 
}) 

Эта функция должна изменить lblStandardWeightCurrentlyтекст всякий раз, когда blur даже происходит. Но Там нет никаких изменений в lblStandardWeightCurrently этикетке ..

Read() Функция:

function Read() { 
    debugger; 
    var oDataGrid = document.getElementById("<%= grdPlanObjectivesStandardWeights.ClientID %>"); 
    var tableRows = oDataGrid.rows; 
    var sum = 0; 
    for (var i = 1; i < tableRows.length; i++) { 
     var col1 = oDataGrid.rows[i].cells[2]; 
     for (j = 0; j < col1.childNodes.length; j++) { 
      if (col1.childNodes[j].type == "text") { 
       if (!isNaN(col1.childNodes[j].value) && col1.childNodes[j].value != "") { 
        sum += parseInt(col1.childNodes[j].value) 
       } 
      } 
     } 
    } 
    if (!isNaN(sum)) { 
     document.getElementById('<%=hidden.ClientID %>').value = sum; 
    } 
} 

Я думаю, что проблема здесь: $("input[id*='<%=txtStandardWeight.ClientID %>']").blur(function() , так как я не могу отладить этот функции. Любая помощь будет оценена по достоинству.

+0

можно создать, создав событие непосредственно onblur = "funcName();" может быть ваш jquery funcion не работает, потому что вы не можете напрямую обращаться к текстовому поле. –

ответ

3

Обратите внимание, что ваше текстовое поле находится внутри шаблона. Это означает, что он фактически не существует до тех пор, пока сетка не будет привязана к базе данных, и даже то, что она есть, есть много текстовых полей, по одному на каждую строку, каждый из которых имеет другой идентификатор. Это означает, что вы не можете просто получить к нему доступ txtStandardWeight.

Однако, поскольку вы используете jQuery в любом случае, почему бы не назначить некоторый класс в текстовое поле, которое позволит вам легко запросить его? более

<asp:TextBox runat="server" ID="txtStandardWeight" CssClass="weightText" ... 

$("input.weightText").blur(function() { 

Одна вещь - убедитесь, что Javascript определен в файле .aspx, в противном случае синтаксис <%# %> не будет работать.

+0

'CssClass' не работает. – Null

+0

@Null, это, безусловно, работает в целом. Что конкретно не работает в вашем случае? – Andrei

+0

'$ (" input [id * = txtStandardWeight "). Click (function()' работает просто отлично, но '$ (" input [id * = txtStandardWeight "). Blur (function()' не запускается! я даже не могу отладить его! – Null

1
$().ready(function() { 
      $("#<%= text.ClientID%>").find("tr").each(function() { 
       $(this).find("td").each(function() { 
        $(this).find("input[id*=txtStandardWeight]").blur(function() { 
         alert("Hello"); 
        }); 
       }); 
      }); 
     }); 

Давайте рассмотрим пример, где GridView имеет идентификатор = текст и ваш текстового поля имеет идентификатор = txtStandardWeight мы должны пройти каждую строку и столбец, чтобы получить должный результат, и когда вы найдете ваше текстовое поле затем управляет надлежащим функционированием в соответствии с вами.

+0

Фактически, когда Gridview отображается на веб-странице, он преобразуется в таблицу, в которой вы можете проверить источник просмотра страницы. –

+0

Я вижу, но не работает для меня! – Null

Смежные вопросы