none
Focus() não funciona após TextChanged RRS feed

  • Pergunta

  • Bom dia pessoal.

    Estou enfrentando a seguinte situação: Quando digito determinada informação em um campo ele realiza o evento TextChanged e valida algumas situações e também da utilizo método Focus() para focar terminado campo do formulário, só que, a aplicação está ignorando o Focus(), eu acredito que seja por causa do AutoPostBack, alguém já passou por isso e tem ideia do que eu possa fazer para resolver este problema?

    quinta-feira, 10 de abril de 2014 13:06

Todas as Respostas

  • Olá, bom dia Anderson,

     aspnet / winApp ?

    quinta-feira, 10 de abril de 2014 13:08
  • Bom dia!

    Que falha minha, acabei esquecendo de mencionar. 

    É Aspnet.

    quinta-feira, 10 de abril de 2014 13:22
  • Este textbox não esta dentro de algum componente como um group ou outra coisa?
    quinta-feira, 10 de abril de 2014 13:30
  • Anderson quando o evento é acionado é feito um postback, assim o controle perde o foco que você havia colocado com o focus().

    Nesse caso você pode fazer seu textchaged com javascript usando um keydown, assim você tem mais controle e fica melhor até para o usuário.

    Se quiser postar o código podemos ajudar melhor.



    Elvis Rodrigues
    Analista Desenvolvedor .Net
    MCTS .Net Framework, SQL Server 2005, WPF, ASP NET
    Email foxelv@hotmail.com

    quinta-feira, 10 de abril de 2014 14:20
  • Fica dentro de um TabPanel.
    quinta-feira, 10 de abril de 2014 14:22
  • Anderson quando o evento é acionado é feito um postback, assim o controle perde o foco que você havia colocado com o focus().

    Nesse caso você pode fazer seu textchaged com javascript usando um keydown, assim você tem mais controle e fica melhor até para o usuário.

    Se quiser postar o código podemos ajudar melhor.



    Elvis Rodrigues
    Analista Desenvolvedor .Net
    MCTS .Net Framework, SQL Server 2005, WPF, ASP NET
    Email foxelv@hotmail.com

    Olá Elvis, vamos lá, vou postar o aspx:

                <asp:TabPanel ID="tbItemdeControle" HeaderText="Itens" runat="server" Enabled="False">
                    <HeaderTemplate>
                        Item de controle</HeaderTemplate>
                    <ContentTemplate>
                        <div>
                            <table class="tabela">
                                <tr>
                                    <td class="cabecalho" colspan="2">
                                        Planejamento e controle de projetos
                                    </td>
                                </tr>
                                <tr>
                                    <td class="espaco">
                                        Item de controle
                                    </td>
                                    <td>
                                        <asp:DropDownList ID="ddlItemControle" runat="server" Width="455px" 
                                            TabIndex="1" />
                                    </td>
                                </tr>
                                <tr>
                                    <td class="espaco">
                                        Usar item do EMS?
                                    </td>
                                    <td>
                                        <asp:RadioButtonList ID="rblItemEms" runat="server" RepeatDirection="Horizontal"
                                            OnSelectedIndexChanged="rblItemEms_SelectedIndexChanged" 
                                            AutoPostBack="True" TabIndex="900">
                                            <asp:ListItem Value="1">Sim</asp:ListItem>
                                            <asp:ListItem Value="0" Selected="True">Não</asp:ListItem>
                                        </asp:RadioButtonList>
                                    </td>
                                </tr>
                                <tr>
                                    <td colspan="2" class="alinha_centro">
                                        <asp:Panel runat="server" ID="pnItemEms" Visible="False">
                                            <br />
                                            <table class="tabela">
                                                <tr>
                                                    <td colspan="6" class="cabecalho_interno">
                                                        Item Ems
                                                    </td>
                                                </tr>
                                                <tr class="alinha_centro">
                                                    <td>
                                                        Código
                                                    </td>
                                                    <td>
                                                        Unid.
                                                    </td>
                                                    <td>
                                                        Quant.
                                                    </td>
                                                    <td>
                                                        Ult. Compra
                                                    </td>
                                                    <td>
                                                        Ult. Valor
                                                    </td>
                                                    <td>
                                                        Total
                                                    </td>
                                                </tr>
                                                <tr class="alinha_centro">
                                                    <td>
                                                        <asp:TextBox ID="txbCodItemEms" runat="server" AutoPostBack="True"
                                                            Width="60px" OnTextChanged="txbCodItemEms_TextChanged" TabIndex="2"></asp:TextBox>
                                                        <asp:ImageButton ID="btn_consultarItem" runat="server" CausesValidation="False" ImageUrl="~/images/ZoomHS.png"
                                                            Width="16px" />
                                                    </td>
                                                    <td>
                                                        <asp:TextBox ID="txbUnMedidaItemEms" runat="server" CssClass="readonly" ReadOnly="True"
                                                            Width="35px" Enabled="False"></asp:TextBox>
                                                    </td>
                                                    <td>
                                                        <asp:TextBox ID="txbQtdeItemEms" runat="server" AutoPostBack="True"
                                                            Width="50px" OnTextChanged="txbQtdeItemEms_TextChanged" TabIndex="3"></asp:TextBox>
                                                    </td>
                                                    <td>
                                                        <asp:TextBox ID="txbDtUltAqItemEms" runat="server" CssClass="readonly" ReadOnly="True"
                                                            Width="65px" Wrap="False" Enabled="False"></asp:TextBox>
                                                    </td>
                                                    <td>
                                                        <asp:TextBox ID="txbUltValItemEms" runat="server" CssClass="readonly" ReadOnly="True"
                                                            Width="60px" Wrap="False" Enabled="False"></asp:TextBox>
                                                    </td>
                                                    <td>
                                                        <asp:TextBox ID="txbValTotalItemEms" runat="server" CssClass="readonly" ReadOnly="True"
                                                            Width="60px" Wrap="False" Enabled="False"></asp:TextBox>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td colspan="6" class="alinha_centro">
                                                        Descrição
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td colspan="6" class="alinha_centro">
                                                        <asp:TextBox ID="txbDescItemEms" runat="server" AutoPostBack="True" TabIndex="16"
                                                            Width="565px" ReadOnly="True" CssClass="readonly"></asp:TextBox>
                                                    </td>
                                                </tr>
                                            </table>
                                            <br />
                                        </asp:Panel>
                                    </td>
                                </tr>
                                <tr>
                                    <td colspan="2" class="alinha_centro">
                                        <asp:Panel runat="server" ID="pnItem">
                                            <table class="tabela">
                                                <tr>
                                                    <td colspan="6" class="cabecalho_interno">
                                                        Item relacionado
                                                    </td>
                                                </tr>
                                                <tr class="alinha_centro">
                                                    <td>
                                                        Código
                                                    </td>
                                                    <td>
                                                        Descrição
                                                    </td>
                                                    <td>
                                                        Quant.
                                                    </td>
                                                    <td>
                                                        Valor
                                                    </td>
                                                    <td>
                                                        Valor total
                                                    </td>
                                                </tr>
                                                <tr class="alinha_centro">
                                                    <td>
                                                        <asp:TextBox ID="txbCodItemRel" runat="server" AutoPostBack="True" TabIndex="400"
                                                            Width="60px" ReadOnly="True" CssClass="readonly"></asp:TextBox>
                                                    </td>
                                                    <td>
                                                        <asp:TextBox ID="txbDescItemRel" runat="server" Width="400px" 
                                                            AutoPostBack="True" ontextchanged="txbDescItemRel_TextChanged" 
                                                            TabIndex="4"></asp:TextBox>
                                                    </td>
                                                    <td>
                                                        <asp:TextBox ID="txbQtdeItemRel" runat="server" AutoPostBack="True" TabIndex="5"
                                                            Width="50px" ontextchanged="txbQtdeItemRel_TextChanged"></asp:TextBox>
                                                    </td>
                                                    <td>
                                                        <asp:TextBox ID="txbValorItemRel" runat="server" Width="70px" Wrap="False" OnKeyUp="formataValor(this, event)"
                                                            OnTextChanged="txbValorItemRel_TextChanged" AutoPostBack="True" 
                                                            TabIndex="6"></asp:TextBox>
                                                    </td>
                                                    <td>
                                                        <asp:TextBox ID="txbValorTotalRel" runat="server" Width="70px" Wrap="False" OnKeyUp="formataValor(this, event)"
                                                            ReadOnly="True" CssClass="readonly" TabIndex="200"></asp:TextBox>
                                                    </td>
                                                </tr>
                                            </table>
                                        </asp:Panel>
                                    </td>
                                </tr>
                                <tr>
                                    <td colspan="2" class="rodape">
                                        <asp:Button runat="server" ID="btnRelacionar" Text="Relacionar" 
                                            OnClick="btnRelacionar_Click" TabIndex="7"  CssClass="botao"/>
                                    </td>
                                </tr>
                            </table>
                            <br />
                            <table class="tabela">
                                <tr>
                                    <td class="alinha_centro">
                                        <asp:Panel runat="server" ID="pnItemRelacionado" GroupingText="Item relacionado"
                                            Visible="False">
                                            <table>
                                                <tr>
                                                    <td class="alinha_centro">
                                                        <asp:GridView ID="gvListaItemRelacionado" runat="server" AutoGenerateColumns="False">
                                                            <Columns>
                                                                <asp:ButtonField ButtonType="Image" CommandName="Editar" HeaderText="Editar" ImageUrl="~/images/EditTableHS.png"
                                                                    Text="Editar">
                                                                    <ItemStyle HorizontalAlign="Center"></ItemStyle>
                                                                </asp:ButtonField>
                                                                <asp:ButtonField ButtonType="Image" CommandName="Excluir" HeaderText="Apagar" ImageUrl="~/images/delete.gif"
                                                                    Text="Apagar">
                                                                    <ItemStyle HorizontalAlign="Center" />
                                                                </asp:ButtonField>
                                                                <asp:BoundField DataField="ItemRelCodigo" HeaderText="Código" HtmlEncode="False">
                                                                    <ItemStyle HorizontalAlign="Center"></ItemStyle>
                                                                </asp:BoundField>
                                                                <asp:BoundField DataField="ItemRelDescricao" HeaderText="Descrição" HtmlEncode="False">
                                                                </asp:BoundField>
                                                            </Columns>
                                                        </asp:GridView>
                                                    </td>
                                                </tr>
                                            </table>
                                        </asp:Panel>
                                    </td>
                                </tr>
                                <tr>
                                    <td>
                                        Prazo
                                        <asp:TextBox ID="txbPrazo" runat="server" Width="100px" 
                                            onkeypress="mascaraData(this)" TabIndex="8"></asp:TextBox>
                                        &nbsp;Total
                                        <asp:TextBox ID="txbValor" runat="server" Width="100px" OnKeyUp="formataValor(this, event)"
                                            ReadOnly="True" CssClass="readonly" TabIndex="100"></asp:TextBox>
                                    </td>
                                </tr>
                                <tr>
                                    <td class="rodape">
                                        <asp:Button ID="btnGravarItemControle" runat="server" Text="Gravar" 
                                            CssClass="botao" TabIndex="9" />
                                        <asp:Button ID="btnCancelar" runat="server" Text="Cancelar" CssClass="botao" 
                                            TabIndex="400" />
                                    </td>
                                </tr>
                            </table>
                        </div>
                    </ContentTemplate>
                </asp:TabPanel>

    Este é o método que executa:

            protected void txbDescItemRel_TextChanged(object sender, EventArgs e)
            {
                txbQtdeItemRel.Text = string.Empty;
                txbValorItemRel.Text = string.Empty;
                txbValorTotalRel.Text = string.Empty;
                txbQtdeItemRel.Focus();
            }


    quinta-feira, 10 de abril de 2014 14:26
  • Se você não tiver referência a biblioteca do Jquery será necessário fazer.

    Daí você faz assim:

    //Quando o usuário preencher o campo e sair do campo vai executar esse código
        $("#txbDescItemRel").blur(function() {
            $("#txbQtdeItemRel").val("");
            $("#txbValorItemRel").val("");
            $("#txbValorTotalRel").val("");
            $("#txbQtdeItemRel").focus();
        });

    Caso não funcione você precisará inspecionar o elemento pelo browser e ver o id Exato do seus textbox.

    Qualquer dúvida posta ai.


    Elvis Rodrigues
    Analista Desenvolvedor .Net
    MCTS .Net Framework, SQL Server 2005, WPF, ASP NET
    Email foxelv@hotmail.com

    quinta-feira, 10 de abril de 2014 14:33