我在一个id = "rpContacts“的中继器控件中放置了几个控件。中继器被放置在id = "ParentTable“的表中。我需要验证中继器内的控件(例如,文本框- txtLastName)是否存在与中继器外的另一个文本框内的值重复的值。验证函数由中继器外部的自定义Validator调用。
问题是,在我的javascript函数中,我既不能获得中继器的客户端id,也不能获得中继器中的控件。
如果我给中继器内的控件提供如下所示的呈现ClientId,我就可以获得这些控件的值
$find('ctl00_body_content_rpContacts_ctl00_txtLastName').Value;
但是对于中继器的每一行,控制的该客户端id将改变。
即。对于第二个中继器行中的txtZip,其id将为'ctl00_body_content_rpContacts_ctl01_txtLastName'.
任何建议,我可以如何做这个验证。
--
中继器代码:
<telerik:RadAjaxPanel ID="AjaxPanel1" runat="server" ClientEvents-OnRequestStart="conditionalPostback">
<table class="ParentTable">
<asp:Repeater ID="rpContacts" runat="server">
<ItemTemplate>
<tr> <td>
<table class="ParentTable" runat="server" id="tblEC">
<tr> <td> <div>
<asp:TextBox ID="txtLastName" runat="server" Width="180"/>
</div> </td> </tr>
</table>
</td> </tr>
</ItemTemplate>
</asp:Repeater>
</table>
</telerik:RadAjaxPanel>
发布于 2014-06-23 15:55:57
这是一个简单的演示,您可以通过它获得中继器中控件的id和值
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
<ItemTemplate >
<asp:TextBox ID="lblSubject" runat="server" Text='<%#Eval("Name") %>' Font-Bold="true"/><br />
</ItemTemplate>
</asp:Repeater>
而jquery将会是
<script type="text/javascript">
$(document).ready(function () {
$('[id*=Repeater1_lblSubject]').on('change', function () {
var id = $(this).attr('id');
var value = $('#' + id).val();
alert(id+'_'+value);
});
});
</script>
https://stackoverflow.com/questions/24358678
复制相似问题