Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将JavaScript事件处理程序添加到ASP控件上动态生成的文本框_Javascript_C#_Asp.net_Event Listener - Fatal编程技术网

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

如何将JavaScript事件处理程序添加到ASP控件上动态生成的文本框,javascript,c#,asp.net,event-listener,Javascript,C#,Asp.net,Event Listener,我们的条件将动态地向ASP用户控件添加文本框,如下所示: if (conditionIsTrue) { TextBox textField = new TextBox(); Panel.controls.Add(textField); } 我想添加一个事件监听器,当用户取消焦点或编辑完文本框时,它会左键填充文本框值 我尝试了以下C#实现,但由于某些原因,侦听器没有处理这些值 if (conditionIsTrue) { TextBox textField = new T

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

if (conditionIsTrue) {
    TextBox textField = new TextBox();
    Panel.controls.Add(textField);
}
我想添加一个事件监听器,当用户取消焦点或编辑完文本框时,它会左键填充文本框值

我尝试了以下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');
    }
}
if(条件真实){
TextBox textField=新建TextBox();
textField.TextChanged+=新事件处理程序(LeadingZero\u处理程序);
Panel.controls.Add(文本字段)
}
public void LeadingZero_处理程序(对象发送方,事件参数e)
{
int FieldLength=10;
if((文本框)sender.Text.Length

是否有一种方法可以在ASP控件上用JavaScript实现事件侦听器,但在C代码中动态生成文本框期间/时添加JavaScript侦听器属性

将此添加到代码隐藏中

textField.AutoPostBack = true;
但是,如果您所做的只是添加一些零填充,而在
引导零处理程序
中没有做其他事情,我建议您使用前端方法。这样可以为您节省回发邮件的时间

<script type="text/javascript">
    function LeadingZero(element) {
        var str = element.value;
        var padding = "0000000000";
        if (str.length < 10) {
            element.value = padding.substring(0, padding.length - str.length) + str;
        }
    }
</script>

添加
textField.AutoPostBack=true作为答案,兄弟,谢谢你。我已经尝试过这个实现,但似乎“onblur”在IE 11中不起作用,或者这个方法有一些根本性的错误。然而,这种方法似乎正被应用到我的元素中,这正是我所要求的。
textField.Attributes.Add("onblur", "LeadingZero(this)");