猿问

如何将 JavaScript 事件处理程序添加到 ASP 控件上动态生成的文本框

我们有条件将文本框动态添加到 ASP 用户控件,如下所示:


if (conditionIsTrue) {

    TextBox textField = new TextBox();

    Panel.controls.Add(textField);

}

我想添加一个事件侦听器,当用户未聚焦或完成编辑 TextBox 时,该侦听器左填充 TextBox 值。


我尝试了以下 C# 实现,但由于某种原因,侦听器没有处理这些值。


if (conditionIsTrue) {

    TextBox textField = new TextBox();

    textField.TextChanged += new EventHandler(LeadingZero_Handler);

    Panel.controls.Add(textField)

}


public void LeadingZero_Handler(object sender, EventArgs e)

{

    int FieldLength = 10;

    if((TextBox)sender.Text.Length < FieldLength)

    {

        (TextBox)sender.Text = (TextBox).sender.Text.PadLeft(FieldLength,'0');

    }

}

有没有办法可以在 ASP 控件上的 JavaScript 中实现事件侦听器,但在 C# 代码中动态生成 TextBox 期间/时添加 JavaScript 侦听器属性?


一只萌萌小番薯
浏览 169回答 1
1回答

芜湖不芜

将此添加到后面的代码中。textField.AutoPostBack = true;但是,如果您所做的只是添加一些零填充,而您在LeadingZero_Handler. 这为您节省了回传。<script type="text/javascript">&nbsp; &nbsp; function LeadingZero(element) {&nbsp; &nbsp; &nbsp; &nbsp; var str = element.value;&nbsp; &nbsp; &nbsp; &nbsp; var padding = "0000000000";&nbsp; &nbsp; &nbsp; &nbsp; if (str.length < 10) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; element.value = padding.substring(0, padding.length - str.length) + str;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }</script>然后将脚本添加到 TextBox 而不是 AutoPostBack 和 TextChanged 处理程序。textField.Attributes.Add("onblur", "LeadingZero(this)");
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答