我将多个控件放入一个 id =“rpContacts”的中继器控件中。中继器放置在 id =“ParentTable”的表内。 我需要验证中继器内的控件(例如文本框 - txtLastName)是否存在中继器外另一个文本框中的重复值。 验证函数由中继器外部的自定义验证器调用。
问题是我无法在我的 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>
最佳答案
这里是一个简单的demo,通过它可以获取repeater内控件的id和value
<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>
关于javascript - 在 javascript 函数中获取中继器内的控件以进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24358678/