Подтвердить что ты не робот

Метод Lost Focus для текстового поля asp.net?

Как написать метод Lost focus для текстового метода asp.net? Пожалуйста, у кого-нибудь есть идея написать это, поделитесь со мной?

4b9b3361

Ответ 1

Итак, я знаю, что каждый показал базовый подход на стороне клиента, и это нормально, но я хотел хотя бы показать решение для обработки определенного события на стороне клиента на сервере.

Давайте взглянем на код и перейдем к нему по частям.

Так как ASP.Net TextBox не выставляет серверное событие для OnBlur, вам придется делать это вручную. К счастью, этого довольно легко достичь. Предположим, у вас есть этот маленький бит кода на вашей странице .aspx. Вы хотите обновить сервер сервера управления ярлыками всякий раз, когда TextBox теряет фокус.

<asp:Label ID="lblOnBlur" runat="server">On Blur Example</asp:Label><br />
<asp:TextBox ID="tbOnBlur" runat="server" ClientIDMode="Static" /><br />
<asp:Label ID="lblOutput" runat="server" />

В ASP.Net встроена функция клиентская функция, которая вызывается для запуска обратных передач, которая принимает два параметра:

  • Цель (идентификатор элемента управления, вызывающего событие)
  • Аргумент (дополнительная информация, которую вы хотели бы передать на сервер)

Вы можете просто подключить событие к разметке, добавив в свой TextBox следующий атрибут и значение:

onblur="__doPostBack('tbOnBlur','OnBlur');"

Однако структура имеет простой способ сгенерировать эту script для вас серверную сторону. В методе Page_Init просто добавьте вызов GetPostBackEventReference и назначьте его атрибуту onblur для управления таким образом:

protected void Page_Init(object sender, EventArgs e)
{
    var onBlurScript = Page.ClientScript.GetPostBackEventReference(tbOnBlur, "OnBlur");
    tbOnBlur.Attributes.Add("onblur", onBlurScript);
}

При стандартных событиях управления сервером автоматическая обработка событий и обращение к событиям осуществляется с помощью IPostBackEventHandler. Это большая работа для одноразового решения, поэтому давайте просто обрабатываем его вручную, проверяя параметры запроса.

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
    {
        var ctrlName = Request.Params[Page.postEventSourceID];
        var args = Request.Params[Page.postEventArgumentID];

        HandleCustomPostbackEvent(ctrlName, args);
    }
}

private void HandleCustomPostbackEvent(string ctrlName, string args)
{
    //Since this will get called for every postback, we only
    // want to handle a specific combination of control
    // and argument.
    if (ctrlName == tbOnBlur.UniqueID && args == "OnBlur")
    {
        lblOutput.Text = "On Blur Event Handled Server Side!" + DateTime.Now;
    }
}

В конце концов, не очень сложно симулировать события на стороне сервера, если вы не возражаете немного вникать в структуру.

Надеюсь, это поможет!

Cheers,
Джош

Ответ 2

Если вы хотите, чтобы сервер сделал что-то после того, как текстовое поле теряет фокус, вы можете добавить AutoPostback = "True" и, если вы не хотите, чтобы postback перезагружал всю страницу, используйте UpdatePanel:

    <asp:ScriptManager ID="ScriptManager1" runat="server" />
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:TextBox ID="TextBox1" runat="server" AutoPostBack="true" 
                            OnTextChanged="TextBox1_TextChanged" />
        </ContentTemplate>
    </asp:UpdatePanel>

Функция TextBox1_TextChanged может затем что-то сделать с текстом (serveride).

Ответ 3

if (!Page.IsPostBack)
    {
        txtName.Attributes.Add("onblur","alert('Hello world')");
    }

Ответ 4

Почему бы вам не использовать это. Lostfocus работает так же:

OnTextChanged="TextBox_TextChanged"