2013-11-15 1 views
0

У меня создается пользовательский элемент управления, как показано ниже:Как доступа к элементам управления в пользовательский элемент управления в JavaScript, используя <% = Control.ClientId%>

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="Add.ascx.vb" Inherits="Add" %> 
<asp:Label ID="Label1" runat="server" Text="Num1"></asp:Label> 
<asp:TextBox ID="tbNum1" runat="server" onblur="sum(document.getElementById('<%=tbNum1.ClientId %>').value,document.getElementById('<%=tbNum2.ClientId %>').value,'<%=tbSum.ClientId %>');"></asp:TextBox> 
<br /> 
<asp:Label ID="Label2" runat="server" Text="Num2"></asp:Label> 
<asp:TextBox ID="tbNum2" runat="server"></asp:TextBox> 
<br /> 
<asp:Label ID="Label3" runat="server" Text="Sum:"></asp:Label> 
<asp:TextBox ID="tbSum" runat="server"></asp:TextBox> 

<script type="text/javascript"> 
    function sum(a, b, controlId) { 
     if (a != '' && b != '') { 
      document.getElementById(controlId).value = parseInt(a) + parseInt(b); 
     } 
    } 
</script> 

У меня есть несколько экземпляров выше пользовательского элемента управления в сети стр. Ниже приведен код:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default2.aspx.vb" Inherits="Default2" %> 

<%@ Register Src="~/Add.ascx" TagPrefix="uc" TagName="Add" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <uc:Add runat="server" ID="ucAdd1" /> 
     <uc:Add runat="server" ID="ucAdd2" /> 
    </div> 
    </form> 
</body> 
</html> 

Когда я вижу источник вида, < = control.ClientId%> не делает клиента идентификатор элемента управления. Мой вопрос вот почему < = control.ClientId%> не работает в встроенном javascript есть ли какая-либо ошибка в синтаксисе? Также есть ли способ доступа к текстовым полям в каждом пользовательском элементе управления отдельно?

Просьба сообщить.

+0

'ClientID' вместо' ClientId' – Grundy

+0

Там не будет ClientId для TextBox .. в вашем случае просто использовать текстовое поле идентификатор конкатенации UserControl идентификатора, который вы используете .. если ваш Префикс usercontrol's is uc then uc_textboxid –

+0

Невозможно ли написать общую функцию javascript внутри разметки contol пользователя для доступа к элементам управления в ней, если на странице есть несколько экземпляров пользовательского элемента управления? – Dinu

ответ

0

Попробуйте

<script type="text/javascript"> 
document.getElementById('<%= tbNum2.ClientID %>').onblur = function(){sum(document.getElementById('<%= tbNum1.ClientID %>').value,document.getElementById('<%=tbNum2.ClientID %>').value,'<%=tbSum.ClientID %>'); } 
function sum(a, b, controlId) { 
if (a != '' && b != '') { 
    document.getElementById(controlId).value = parseInt(a) + parseInt(b); 
    } 
} 
</script> 
Смежные вопросы