none
Disparar evento quando um DropDownList perder o foco RRS feed

  • Pergunta

  • Bom dia pessoal,

    Eu tenho um DropDownList de UF e um DropDownList de cidade.

    O DropDownList de cidade é carregado através da seleção do  DropDownList de UF.

    Como faço para quando o DropDownList de UF perder o foco, carregar o DropDownList de cidade?

    Tem como fazer isso usando javaScript?

    Aguardo a ajuda de vocês.

    Obrigada!

    terça-feira, 25 de fevereiro de 2014 12:38

Respostas

  • <asp:DropDownList runat="server" ID="myListDropDown" autopostback="true" CssClass="text" OnSelectedIndexChanged="myListDropDown_Change" />
    protected void myListDropDown_Change(object sender, EventArgs e)
            {
                seu evento.
            }



    Se a resposta foi útil por favor qualifique. Italo Biguzi Duarte, Desenvolvedor ASP.NET C#, Italo.biguzzi@gmail.com

    • Marcado como Resposta Jamille Moreira quinta-feira, 27 de fevereiro de 2014 18:50
    quinta-feira, 27 de fevereiro de 2014 18:20

Todas as Respostas

  • Cara existe o evento onblur que dispara quando o objeto perde o foco.

    vc pode carregar o segundo combo neste evento!

    Abraço!


    Nome : Romy G. Moura Cargo: Analista Programador

    terça-feira, 25 de fevereiro de 2014 13:00
  • Romy, Teria um exemplo de código, para postar?

    Obrigada

    terça-feira, 25 de fevereiro de 2014 13:22
  • Cara eis o código, porém seria mais legal se fizer no onchange.

    <p>
        <select name="ddl1" id="ddl1">
            <option value="0">Selecione</option>
            <option value="1">Valor 1</option>
            <option value="2">Valor 2</option>
            <option value="3">Valor 3</option>
        </select>
        <br />
        <select name="ddl2" id="ddl2">
        </select>
    </p>

      <script language="javascript" type="text/javascript">
            $(document).ready(function () {
                //$("#ddl1").blur(function (e) {
                //    $('#ddl2').find("option").remove();
                //    
                //    var options = "";
                //    for (var i = 0; i < $(this).val() ; i++) {
                //        options += '<option value="'+ i.toString() +'">Este é o valor '+ i.toString()  +'</option>';
                //    }
    
                //    $('#ddl2').append(options);
                //});
    
    
                $("#ddl1").change(function (e) {
                    $('#ddl2').find("option").remove();
                    
                    var options = "";
                    for (var i = 0; i < $(this).val() ; i++) {
                        options += '<option value="' + i.toString() + '">Este é o valor ' + i.toString() + '</option>';
                    }
    
                    $('#ddl2').append(options);
                });
    
            });
        </script>

    Não esqueça de importar a biblioteca jquery.


    Nome : Romy G. Moura Cargo: Analista Programador

    terça-feira, 25 de fevereiro de 2014 17:05
  • Boa tarde Romy, tem como postar um exemplo usando o onchange.

    Tanto o  DropDownList de UF quanto o DropDownList de cidade, são carregados com informações do banco.

    Obrigada.

    quinta-feira, 27 de fevereiro de 2014 17:12
  • <asp:DropDownList runat="server" ID="myListDropDown" autopostback="true" CssClass="text" OnSelectedIndexChanged="myListDropDown_Change" />
    protected void myListDropDown_Change(object sender, EventArgs e)
            {
                seu evento.
            }



    Se a resposta foi útil por favor qualifique. Italo Biguzi Duarte, Desenvolvedor ASP.NET C#, Italo.biguzzi@gmail.com

    • Marcado como Resposta Jamille Moreira quinta-feira, 27 de fevereiro de 2014 18:50
    quinta-feira, 27 de fevereiro de 2014 18:20
  • Boa tarde Italo!

    Pelo fato do dropDownList de UF ser autopostback = "true", quando é carregado o dropDownList de cidade, é perdido o foco do dropDownList de UF, o foco é dado no endereço do navegador.

    Como fazer para o foco permanecer no dropDownList de UF depois de ser carregado o dropDownList  de cidade?

    Já tentei colocar:

    Protected Sub ddlUF_Change(ByVal sender As Object, ByVal e As System.EventArgs)
            preencheCidade(ddlUF.SelectedValue.ToString())
            ddlUF.Focus()
        End Sub

    mas não funcionou.

    Tem outra forma?

    Desde já agradeço.

    quinta-feira, 27 de fevereiro de 2014 18:55
  • Jamille, boa tarde. Você poderia armazenar o estado do objeto na Session, exemplo 

    protected void myListDropDown_Change(object sender, EventArgs e)
            {
                Session["DDL_UF"] = "focus_on";
            }
    
    
    
    
     protected void Page_Load(object sender, EventArgs e)
            {
                if (IsPostBack)
                {
                    if(Session["DDL_UF"] != null)
                    {
                       if(Session["DDL_UF"] == "focus_on")
                       {
                           ddlUF.focus();
                       }
                    }
                }
            }

    Sendo assim, no evento de OnChange ele vai guardar o texto 'focus_on' na memória, no evento Page_load, vamos capturar somente os eventos de volta do servidor, dentro verificamos se a Session existe, se existir e conter o nome 'focus_on' fala pra focar no objeto.


    Se a resposta foi útil por favor qualifique. Italo Biguzi Duarte, Desenvolvedor ASP.NET C#, Italo.biguzzi@gmail.com



    sexta-feira, 28 de fevereiro de 2014 17:15
  • Boa tarde Italo,

    Fiz o que você sugeriu, mas mesmo assim o foco não continua no ddlUF, ele vai para o endereço do navegador.

    Obrigada pelas postagens.

    sexta-feira, 28 de fevereiro de 2014 18:27
  • Isso acontece por que ao dar um autopostback a sua página é atualizada, por tanto seu objeto perde o foco.

    Sugiro que trabalhe com ajax que provavelmente vai dar certo.

    Abraço!


    Nome : Romy G. Moura Cargo: Analista Programador

    sexta-feira, 28 de fevereiro de 2014 18:32
  • Tem algum exemplo pra postar aqui pra mim?

    Obrigada

    sexta-feira, 28 de fevereiro de 2014 20:05