Как добавить обработчик событий JavaScript в динамически генерируемые текстовые поля на элементе управления ASP - PullRequest
0 голосов
/ 24 мая 2018

У нас есть условия, которые будут динамически добавлять TextBoxes в пользовательский элемент управления 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');
    }
}

Есть ли способ, которым я мог бы реализовать прослушиватель событий в JavaScript на элементе управления ASP, но добавить атрибут прослушивателя JavaScript во время / когда динамически генерируется TextBox в коде C #?

1 Ответ

0 голосов
/ 24 мая 2018

Добавьте это к коду позади.

textField.AutoPostBack = true;

Но если все, что вы делаете, это добавляете некоторые дополнения нулями, и вы ничего не делаете в LeadingZero_Handler, я бы рекомендовал интерфейсный подход.Это сэкономит вам PostBack.

<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>

И затем добавьте скрипт в TextBox вместо AutoPostBack и обработчика TextChanged.

textField.Attributes.Add("onblur", "LeadingZero(this)");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...