【发布时间】:2017-04-12 19:13:09
【问题描述】:
如何获取使用 javascript/jquery 动态创建的控件的客户端 ID。
我有一个日期选择器,如果值发生变化,它应该触发一个 textchanged 事件并执行一些功能。下面是我的脚本
function BindControlEvents() {
$(".datepicker").datepicker({
format: 'mm/dd/yyyy',
autoclose: true,
todayBtn: 'linked'
}).on('changeDate', function (ev) {
__doPostBack('MainContent_dteFr1002', '');
}).on('clearDate', function (ev) {
//to do
});
}
//Initial bind
$(document).ready(function () {
BindControlEvents();
});
//Re-bind for callbacks
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function () {
BindControlEvents();
});
动态生成文本框日期选择器的代码隐藏
protected void Page_Init(object sender, EventArgs e)
{
LoadControls(reportDefId);
}
protected void LoadControls(int reportDefId)
{
HtmlTableCell cellDate = new HtmlTableCell();
TextBox dte = new TextBox();
dte.ToolTip = "If you need to filter for blank dates, please select date range 1/1/1753-1/1/1753";
dte.Attributes.Add("type", "text");
dte.Attributes.Add("class", "datepicker");
if (rfl.fieldDisplayName.Contains("Start") || rfl.fieldDisplayName.Contains("End"))
dte.ID = "dte" + id.ToString();
else
dte.ID = "dteFr" + id.ToString();
dte.Style["Width"] = "85px";
dte.Style["Height"] = "24px";
dte.TextChanged += new EventHandler(dte_TextChanged);
cellDate.Controls.Add(dte);
}
为了测试,我对 ClientID 'MainContent_dteFr1002' 进行了硬编码,以查看它是否会触发 textchnaged 事件。确实如此。所以我需要动态传递 cliendid 值,其中 cliendID 包含 dte。
我已经搜索过,但没有找到合适的答案。
请帮忙! 谢谢
【问题讨论】:
标签: javascript c# jquery asp.net