我有包含另一個子中繼器的父中繼器。 爲了簡單起見,讓我們說兒童中繼器包含文本框和Requiredvalidator。在ASP.NET Web窗體中我想用javascript控制兒童中繼器中的控制器
標記的簡單的例子:
<asp:Repeater ID="rpt1" runat="server">
<HeaderTemplate>
....
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lbl1" runat="server" CssClass=".."></asp:Label>
<div class="..">
<asp:Repeater ID="rpt2" runat="server">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<div class="...">
<asp:TextBox ID="txt21" runat="server" CssClass="..." MaxLength="7" CssClass="ErrorMessage" ErrorMessage="*" />
<asp:RequiredFieldValidator ID="rfv21" runat="server" CssClass="ErrorMessage" ErrorMessage="*" />
</div>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:Repeater>
</div>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:Repeater>
我創造這樣的方法來獲取第二中繼的RequiredField ID:
function getId(){
var myId = document.getElementById('<%= rfv21.ClientID %>');
}
但當然沒有工作,有一個例外:
The name control-name Does Not Exist in the Current Context
那麼我該如何做到這一點?
我想提一提的是,企業需要對我來說,當平變化,的onkeyup,onkeydown事件事件火災的txt21它會得到它的等效rfv21和enbale它:
我創建這個方法,激發了平變化,的onkeyup,onkeydown事件的事件改變了:
function txt21_onChange(txtbox) {
var newValue = this.value;
var oldValue = this.oldvalue;
var myRfv2 = document.getElementById('<%= rfv2.ClientID %>');
if (newValue != oldValue) {
ValidatorEnable(myRfv2, true);
}
}
,我更新txt21是:
<asp:TextBox ID="txt21" runat="server" CssClass=".." MaxLength="7" onkeyup="javascript: txt21_onChange(this);this.oldvalue = this.value;" />
,但此行希望工作:
var myRfv2 = document.getElementById('<%= rfv2.ClientID %>');
正如我之前解釋過的。
我認爲Item.FindControl(..)可能會有所幫助,但我們如何在這種情況下使用它?
有將是很多很多'rfv21'控制 - 每個父轉發行將會有多達數其兒童中繼器行。每個人都將有一個生成的ID。你想一次訪問一個特定的一個還是全部? – Andrei
我想訪問特定的一個rfv21當txt21 onchange激發我想訪問它的rfv21來啓用它 – Marzouk
然後你需要訪問它相對於它的txt。你使用jQuery嗎?將它相當簡單的任務 – Andrei