none
Não recarregar página caso TextBox vazio RRS feed

  • Pergunta

  • Eu queria que quando um TexBox estiver vazio, a página não seja recarregada.

    Atualmente quando eu pressiono a tecla enter, a página recarrega. Estou usando o seguinte código:

    if (!String.IsNullOrEmpty(meuTextBox.Text))
                {

                    string searchType = this.ddlSearchType.SelectedValue;
                    string searchValue = this.meuTextBox.Text;

                    this.OnSearchResource(searchType, searchValue);

                    this.Response.Redirect(pag de redirecionamento);

                }
                else
                {

                }


    Eu queria que caso o TextBox estivesse vazio, não fizesse nada.

    Edit: 

    Eu fiz da seguinte maneira com JavaScript:

    function Validate() {

            if (document.getElementById("<%=txbSearch.ClientID%>").value == "") {
                
                return false;
            }
        }

    O problema é que funciona somente quando aperto Enter, quando clico no botão não entra na regra do JavaScript.

                    
    • Editado d2013 segunda-feira, 30 de setembro de 2013 16:36
    quinta-feira, 26 de setembro de 2013 18:19

Respostas

  • d2013,

    Faça assim:

    <asp:TextBox runat="server" ID="txbSearch" CssClass="SearchTextBoxStyle"/>

    <asp:RequiredFieldValidator runat="server" ID="rfvSearch" ControlToValidate="txbSearch" ErrorMessage="Informe um valor para a consulta" />

    <asp:Button ID="btSearch" runat="server" OnClick="btSelectInformationId_Click"
    Text="Pesquisar" />

    O motivo de não estar funcionando é que você utiliza CausesValidation="false" para o seu botão, faça como te falei acima que o resultado será exatamente o que você quer.


    Ricardo Minoru Makiyama



    • Marcado como Resposta d2013 terça-feira, 1 de outubro de 2013 13:37
    terça-feira, 1 de outubro de 2013 13:29

Todas as Respostas

  • d2013,

    Você pode fazer isso utilizando o RequiredValidator, segue um exemplo:

    <asp:RequiredFieldValidator runat="server" id="reqName" controltovalidate="txtSeuTexboxID" errormessage="Preencha um valor!" />


    Ricardo Minoru Makiyama



    • Sugerido como Resposta Leonardo Lourenço Silva terça-feira, 1 de outubro de 2013 02:11
    • Não Sugerido como Resposta d2013 terça-feira, 1 de outubro de 2013 12:26
    • Marcado como Resposta d2013 terça-feira, 1 de outubro de 2013 12:28
    • Não Marcado como Resposta d2013 terça-feira, 1 de outubro de 2013 12:41
    terça-feira, 1 de outubro de 2013 02:05
  • Obrigado pela resposta Ricardo.

    Sua sugestão até que funcionou, mas quando clico com o mouse e o meu TexBox está vazio, a página continua recarregando. Com o Enter funcionou, eu queria que com o clique no botão também não recarregasse a página, sabe, tipo como é no Google, se você não digitar nada e pressionar o Enter ou clicar em "buscar" não acontece nada.

    terça-feira, 1 de outubro de 2013 12:44
  • d2013,

    Com o RequiredValidator o evento server side não será disparado e a página não será recarregada até que o componente alvo possua um valor válido.

    Teria como você postar o código da sua página aspx?


    Ricardo Minoru Makiyama


    terça-feira, 1 de outubro de 2013 13:11
  • <asp:Button id="btnTeste" runat="server" onClientClick="javascript:return Validate();"/>

    Com isso sua função JS será chamada antes do servidor e com o return false sua página não será carregada. 

    Espero ter ajudado. 

    Se ajudou marque.

    Abraço.


    Voce pode encarar um erro como uma besteira a ser esquecida, ou como um resultado que aponta uma nova direcao by Steve Jobs

    terça-feira, 1 de outubro de 2013 13:16
  • Meu TexBox: 

    <asp:TextBox runat="server" ID="txbSearch" CssClass="SearchTextBoxStyle"/>

    Meu Botão:

    <asp:Button ID="btSearch" runat="server" OnClientClick="return Validate()" OnClick="btSelectInformationId_Click"
    Text="Pesquisar" CausesValidation="false"/>


    Função que verifica se TexBox vazio, não fazer nada. O mais estranho é que "busca" só assume vazio (entra no if) quando pressionado a tecla "Enter", se clicar no botão com 

    mouse, não entra no if.

    <script type="text/javascript">

        function Validate() {

            var busca = document.getElementById("<%=txbSearch.ClientID%>").value;

            if (busca == "") {

                document.getElementById("<%=txbSearch.ClientID%>").focus();

                return false;
            }
            return OnClick = false;
        }

    </script>

    Obrigado pela ajuda.

    terça-feira, 1 de outubro de 2013 13:18
  • d2013,

    Faça assim:

    <asp:TextBox runat="server" ID="txbSearch" CssClass="SearchTextBoxStyle"/>

    <asp:RequiredFieldValidator runat="server" ID="rfvSearch" ControlToValidate="txbSearch" ErrorMessage="Informe um valor para a consulta" />

    <asp:Button ID="btSearch" runat="server" OnClick="btSelectInformationId_Click"
    Text="Pesquisar" />

    O motivo de não estar funcionando é que você utiliza CausesValidation="false" para o seu botão, faça como te falei acima que o resultado será exatamente o que você quer.


    Ricardo Minoru Makiyama



    • Marcado como Resposta d2013 terça-feira, 1 de outubro de 2013 13:37
    terça-feira, 1 de outubro de 2013 13:29
  • Cara, funcionou. Você salvou minha vida, muito obrigado.

    Bem mais simples do que usar a função, valeu mesmo.

    terça-feira, 1 de outubro de 2013 13:37
  • d2013,

    Estamos aí pra isso!

    Abraços


    Ricardo Minoru Makiyama



    terça-feira, 1 de outubro de 2013 13:47