日期:2014-05-18  浏览次数:21159 次

DropdownList change 事件只触发一次?
jQuery代码:
JScript code

$(document).ready(function(){
        //获取项目下拉框的值(项目编号)
        var ddlxm=$("#<%=drpXMName.ClientID %>");
        ddlxm.change(function(){
             $.post(
               "../ajax/GetHTByObjHandler.ashx",
               {xmNumber:$('#<%=drpXMName.ClientID %> option:selected').val()},
               function(results){
                    $("#divht").val(results);                          
               }),"html";
        })
    })


Haddler里面的代码:
C# code

 context.Response.ContentType = "text/html";

        //读取传过来的项目
        string xmNumber = context.Request.QueryString["xmNumber"];
        HTBLL bll = new HTBLL();

        IList<Tb_HTInfo> list = bll.GetHTMessageByObjNumber(xmNumber);
        StringBuilder sd = new StringBuilder();
        sd.Append("<select id=\"ddlHT\"> runat=\"server\"");
        sd.Append("<option value=\"--请选择--\"  selected=\"selected\">--请选择--</option>");
        if (list.Count > 0)
        {
            for (int i = 0; i < list.Count; i++)
            {
                sd.Append("<option value=\""+list[i].Ht_HTnumber+"\"  selected=\"selected\">"+list[i].Ht_HTName+"</option>");
            }
        }
        sd.Append("</select>");
        context.Response.Write(sd);


为什么第一次会触发下拉框的change事件并且进入到Haddler里面,可是只会进入一次?后面就不再触发change事件了?是怎么回事?还是说一般不用change事件来实现这个功能?那用哪个事件?求高手,在线等

------解决方案--------------------
 
调试一下JS看看 alert能弹出来么

------解决方案--------------------
浏览器缓存了第一次访问的结果,因为你第二次访问传递参数没变化,所以浏览器就用第一次的结果显示
------解决方案--------------------
autopostback=true
------解决方案--------------------
js调错的话,只能用alert一点一点地弹出慢慢调吧!
------解决方案--------------------
探讨

引用:
浏览器缓存了第一次访问的结果,因为你第二次访问传递参数没变化,所以浏览器就用第一次的结果显示

那为什么第一次调试的时候可以进入到Haddler里面?而第二次调试的时候都不进入Haddler?

------解决方案--------------------
忘了在哪里看到过,也许早期版本的jquery有这个问题。把change改成.bind('change', function()试试看