Jquery实现鼠标点击时动态添加文本框离开时自动更新排序

首先声明:这不是原创,是园子中一位同学的原创,正好我的项目中需要这样一个功能,但他写的原创不能满足我的功能,有些地方不够完善。所以我拿来改了改。现在可以正常使用。在这里要多谢那位同学。没找到原文链接了。抱歉!

 

开始讲解

更新前:排序栏目只显示数字

当把鼠标放在数字上单击时:变为文本框,填入数字后,鼠标离开。自动更新。

贴出代码:

$(document).ready(function(){ 
  //修改栏目id
    $(".BY").click(function() { 
        var r = /^[0-9]*[1-9][0-9]*$/   //判断正整数的正则表达式。
        var old = $(this).text(); 
        var o = $(this); 
        o.html("<input class=\"OnBY\" type=\"text\"  onMouseOver=\"this.select();\"   value=\"" + old + "\"/>"); 
         $(".OnBY").blur(function() { 
            var number=$(".OnBY").val();    //获取文本框中的值。
            var columnid=o.attr("DbID");    //获取DbID属性的值  栏目的ID号。
            if(!r.test(number))
             {
               alert("数字格式错误");
               $(this).select()
                 return false;
             }
            if(number.length==0)           //判断文本框中是否有值。
            {
               alert("不能为空");
               $(this).select()
               return false;
            }
            else                             //Jquery异步更新排序号。
            {
                $.ajax({ 
                    type: "GET", 
                    url: "../AjaxAsyn/UpdateSortNo.aspx", 
                   data: "ID=" + o.attr("DbID") + "&BY=" + $(".OnBY").val()+"&date="+ new  Date().getTime()+"&Type=1",  //增加时间参数,表示请求的是不同的页面  ,type是一个标识:标识对文章更改排序,还是对产品,还是对栏目。
                   beforeSend:function(XMLHttpRequest)   //更新前显示等待的图片
                     {
                       $("#showResult"+columnid).show();  
                     },
                    success: function(msg)        //更新成功
                     { 
                        o.html($(".OnBY").val());  
                         $("#showResult"+columnid).hide();
                           //o.html(old); 
                     } 
                    });
            }   
         }); 
   }); 

 

 

aspx页面代码:


            <div class="col7">
                <span class="BY"  DbID='<%#Eval("id") %>' title="点击修改"><%# Eval("SortNo") %></span>             
            </div>

 

更新排序的后台代码:

。。。。。。。。。。。。

 columnId = Web.CommFun.UrlParameters.IntParameters(this, "ID");
        SortNo = Web.CommFun.UrlParameters.IntParameters(this, "BY");
        dateTime = Web.CommFun.UrlParameters.StringParameters(this, "date");
        TypeNo = Web.CommFun.UrlParameters.IntParameters(this, "Type");  //TypeNo  1修改栏目编号 2修改二级栏目编号 3新闻文章 4产品排序
        UpdateSorts();
    }
    private void UpdateSorts()
    {             
        switch (TypeNo)
        {
            case 1:
                {
                    DAL.ColumnDAL dal = new DAL.ColumnDAL();
                    if (dal.UpdateSortNo(columnId, SortNo) > 0)
                    {
                        Response.Write("更新排序成功");
                        Response.End();
                    }
                    else
                    {
                        Response.Write("更新失败!");
                        Response.End();
                    }
                    break;
                }
            case 2:

           。。。。。。。略

标签: Jquery学习
posted @ 2010-03-18 16:16 王一一 阅读(2159) 评论(4) 编辑 收藏

 回复 引用 查看   
#1楼 2010-03-18 16:20 ygcao      
过会消失,和刚那个一样的东西。哈哈
 回复 引用 查看   
#2楼 2010-03-18 17:20 踏云风      
我也做过类似的,不过我是一开始就显示个文本框。修改后,成功的话,就改变个文本框的背景颜色。
原理都是差不多

 回复 引用 查看   
#3楼[楼主] 2010-03-18 17:27 王一一      
@踏云风
是啊。都差不多。说白了都是调$.ajax函数来更新。

 回复 引用 查看   
#4楼 2010-03-19 22:14 duncannjm      
在原来的基础上加了个ajax提交!