代码如下在firefox opera等浏览器都能正常运行
但是在IE6中 响应按键事件keydown后会自动触发失去焦点事件导致运行了两次异步处理数据库有什么办法解决吗?
$(document).ready(function()
{
    $(".caname").click(function()
    {
        var objTD=$(this);
        var oldText=$.trim(objTD.text());//保存td中原有的文本
        var input=$("<input type='text' value='"+oldText+"'>")
        objTD.html(input);
        input.click(function()
        {
          return false;
        });
        //设置文本框样式
        input.css("border-width","0px");
        input.css("font-size","15px");
        //input.height($(this).height);
        input.width(objTD.width());
        input.css("text-align","center");
        input.trigger("focus").trigger("select");(opera中需先触发focus事件)
        //文本框失去焦点事件
        input.blur(function()
        {
           var inputText=$(this);
           if(inputText.val()!=oldText)
           {
               if(inputText.val()=="")
               {
                  alert("该字段名称不能为空!");
                  objTD.html(oldText);
                  return;
               }
               var caId=$.trim(objTD.prev().text());
               var url="../handler/ChangeCaName.ashx?caname=" + encodeURI(encodeURI(inputText.val())) +
               "&caId="+caId+"&t="+new Date().getTime();
               //AJAX异步处理数据库
               $.get(url,function(data)
               {
                   if(data=="false")
                   {
                  
                     alert("修改失败!");
                     inputText.trigger("focus").trigger("select");
                  
                    }
                    else
                    {
                      alert("修改成功!");
                      objTD.html(inputText.val());
                    }
                });
           }
           else
           {
               objTD.html(inputText.val());
           }
        });
  
        input.keydown(function(event)
        {
           var jianzhi = event.keyCode;
           var inputText=$(this);
           switch(jianzhi)
           {
              case 13:
                     if(inputText.val()!=oldText)
                    {
                       if(inputText.val()=="")
                       {
                         alert("该字段不能为空!");
                         objTD.html(oldText);
                         return;
                       }
                        var caId=$.trim(objTD.prev().text());
                        var url="../handler/ChangeCaName.ashx?caname=" + encodeURI(encodeURI(inputText.val())) +
                        "&caId="+caId+"&t="+new Date().getTime();
                       //AJAX异步处理数据库
                       $.get(url,function(data)
                      {
                         if(data=="false")
                        {
                  
                          $("#errorText").text("修改失败!");
                           inputText.trigger("focus").trigger("select");
                  
                        }
                        else
                        {
                          alert("修改成功!");
                           $("#errorText").text("");
                          objTD.html(inputText.val());
                        }
                     });
                   }
                   else
                   {
                     objTD.html(inputText.val());
                   }
                break;
              case 27:
                 $("#errorText").text("");
                objTD.html(oldText);
                break;  
           }
        });
    });
});

解决方案 »

  1.   

    近来的问题都是说在FF下好使,在IE里不好使.不知为什么不先做好IE里的再看别的,毕竟在国内使用IE的数量占大多数.尤其是电脑基础低的用户.这也就是说,对电脑基础可以的用户,即使他们用FF不能看,他们也知道换用IE来看.而对电脑基础低的用户,如果他们用IE不能看,那根本就不可能再想到用FF看.也就是说,IE下不好使,你的东西就彻底死了.