使用 attributes.add(onload..) 在网络表单上动态添加文本框

Dynamically add textboxe(s) on webform with attributes.add(onload..)

我已经搜索过类似的案例,但找不到与我相匹配的案例,而且我对 js、jquery 和一般网站流程不太了解,无法自行解决。

我正在像这样动态添加文本框:

        var nr = new System.Web.UI.HtmlControls.HtmlTableRow();
        var c1 = new System.Web.UI.HtmlControls.HtmlTableCell();
        var c2 = new System.Web.UI.HtmlControls.HtmlTableCell();
        c1.InnerText = Q.Trim(new char[] { '{', '$', '[', ']', '}' }).TrimStart(new char[] { '-' });
        c2.Controls.Add(new TextBox() { ID = "tb_" + c.ToString(), ClientIDMode = System.Web.UI.ClientIDMode.Static });
        var dateControl = c2.Controls[0] as TextBox;
        dateControl.Attributes.Add("autocomplete", "off");
        dateControl.Attributes.Add([event here], "initiateDateControl('"+ dateControl.ID + "')");

目前我正在为 [此处的事件] 使用 "onclick",但我想要加载或类似的东西。

function initiateDateControl(dateControl) {
    $("#" + dateControl).datepicker({
        dateFormat: "yy-mm-dd",
        changeYear: true
    });
}

那是因为onload 不起作用但是onclick 起作用了。如何在页面加载时加载 jquery-datepicker?

我不确定是否可以添加正文,因为所有控件都在 asp:Content 中。

一个简单的解决方法是为像这样的所有控件提供唯一的 CssClass

c2.Controls.Add(new TextBox() { 
    ID = "tb_0", 
    CssClass="my_tb", 
    ClientIDMode = System.Web.UI.ClientIDMode.Static });

然后您可以像这样在 DOM 上调用它

$(document).ready(function () {
    $(".my_tb").datepicker({
        dateFormat: "yy-mm-dd",
        changeYear: true
    });
});

或者您可以使用 jQuerys Attribute Starts with Selector

$(document).ready(function () {
    $("input[id^='tb_']").datepicker({
        dateFormat: "yy-mm-dd",
        changeYear: true
    });
});