查了半天资料, 据说这三事件的执行顺序是:

onkeydown  ->  onkeypress  ->  onkeyup

 

===========================

我遇到的情况是, onkeyup的注册的方法执行异步的ajax方法, 这时好像只有onkeyup事件比较满意

在input中, 当按下一个字母键"S"时, onkeydown、onkeypress都会先执行ajax的方法, 之后才给input赋值, 造成查询结果为空.

当用onkeyup事件, 则可以捕获到"上箭头"、"下箭头"按键, 唯独捕获不了"回车键". 尝试了各种办法, 都没法完全解决, 干脆用  onkeydown事件专门处理下回车键吧

 

============================

代码如下:  后期加的功能, 时间赶, 又不擅长前台, 赶工写的功能,  没有很好的结构去重用代码, 以后有时间可能会整理下, 因此: 垃圾代码仅为实现功能, 见谅.

前台代码:

View Code
<td class="infoContent">
<asp:HiddenField ID="hiddenFldApplication" runat="server"/>
<div id='divAffectApplication' class='divAffectApplication' runat="server" style="word-warp:break-word;overflow-x:hidden;overflow-y:scroll;border:inset 2px;width:98%;height:50px;" onclick="inputFocus(this);">
<input type="text" style="margin-left:10px;width:120px;border: none 0px" onkeydown="checkEnterKey(event,'divPopupLayer')" onkeyup="checkKey(event,this,'divPopupLayer');">
</div>
</td>

 

相关后台代码:

View Code
if (aService != "")
{
aService += "<INPUT style='BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 120px; MARGIN-LEFT: 10px; BORDER-TOP: 0px; BORDER-RIGHT: 0px' class=valid onkeydown=\"checkEnterKey(event,'divPopupLayer')\" onkeyup=\"checkKey(event,this,'divPopupLayer');\">";
//txtAffectServices.Text = aService;
this.divAffectService.InnerHtml = aService;
}
else
{
aApplication += "<INPUT style='BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 120px; MARGIN-LEFT: 10px; BORDER-TOP: 0px; BORDER-RIGHT: 0px' class=valid onkeydown=\"checkEnterKey(event,'divPopupLayer')\" onkeyup=\"checkKey(event,this,'divPopupLayer');\">";
this.divAffectApplication.InnerHtml = aApplication;
}

 

//一般处理程序

//handler方法获取Post的请求参数

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

using SqlDBLib;
using CommonLib;
using System.Text;

namespace WebSite.Common
{
    /// <summary>
    /// 根据服务表返回特定格式的服务名称(如: Svr(张鹏),Svr(苏铁))
    /// </summary>
    public class ServiceInfoHandler : IHttpHandler, System.Web.SessionState.IRequiresSessionState
    {

        public void ProcessRequest(HttpContext context)
        {
            //context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
            //context.Response.ContentType = "text/plain";
            //if ((context.Session["_userRoles"] as List<string>).Count != 0)
            //{
            //    if ((context.Session["_userRoles"] as List<string>).Contains("开发负责人") || (context.Session["_userRoles"] as List<string>).Contains("管理员"))
            //    {
            //        List<string> lst = ServiceDB.GetServicePrincipal();
            //        StringBuilder sb = new StringBuilder();
            //        foreach (string s in lst)
            //        {
            //            sb.Append(s + ",");
            //        }
            //        context.Response.Write(sb.ToString());
            //    }
            //    else
            //    {
            //        context.Response.Redirect("~/Default.aspx");
            //    }
            //}
            //else
            //{
            //    context.Response.Redirect("~/Default.aspx");
            //}


            context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
            context.Response.ContentType = "text/plain";
            if ((context.Session["_userRoles"] as List<string>).Count != 0)
            {
                if ((context.Session["_userRoles"] as List<string>).Contains("开发负责人") || (context.Session["_userRoles"] as List<string>).Contains("管理员"))
                {
                    //获取XMLHttpRequest的Post方式中的Send发送的参数
                    string inputStr = "";
                    using (System.IO.Stream stream = context.Request.InputStream)
                    {
                        using (System.IO.StreamReader sr = new System.IO.StreamReader(stream))
                        {
                            try
                            {
                                inputStr = sr.ReadToEnd();
                            }
                            catch (Exception ex)
                            {
                                throw ex;
                            }
                        }
                    }

                    if (!string.IsNullOrEmpty(inputStr))
                    {
                        //List<string> lst = ServiceDB.GetServicePrincipal(inputStr);
                        List<string> lst = ServiceDB.GetSrvAppPrincipal(inputStr);
                        StringBuilder sb = new StringBuilder();
                        foreach (string s in lst)
                        {
                            sb.Append(s.Replace(")",")<em style=\"display:none;\">") + "</em>,");
                        }
                        context.Response.Write(sb.ToString());
                    }
                }
                else
                {
                    context.Response.Redirect("~/Default.aspx");
                }
            }
            else
            {
                context.Response.Redirect("~/Default.aspx");
            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
View Code

相关文章:

  • 2021-11-12
  • 2022-12-23
  • 2022-02-11
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-27
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-25
  • 2022-12-23
  • 2021-09-15
  • 2022-12-23
相关资源
相似解决方案