随笔-312  评论-11874  文章-2  trackbacks-220
作者:Dflying Chen (http://dflying.cnblogs.com )

可能有些朋友还不了解什么是In Place Editing(不知道怎么翻译),请先看一下下面的DEMO(首页过滤掉了Flash,请进入帖子观看,下面是一张截图


上面三个输入在平时就是普通的Label,鼠标悬停在上面时会有边框出现。当用户点击这个Label时,切换到Input状态。用户输入完毕鼠标移开,又会切换回Label状态,提供了丰富的用户视觉体验,同时也节约了页面空间。该控件是我匆促之间(一个小时)完成,好多代码组织混乱,可能也会有不少Bug,仅供各位参考并请不吝指正。

InPlaceEditingInput控件有如下五个属性,当然,您可以很容易的扩充:

  1. toolTipText:该输入控件的初始文字提示。上面DEMO中的“Enter Your Name”就是制定的这个属性。
  2. toolTipTextColor:该输入控件的初始文字的颜色,默认值为#aaa。您可以看到上面DEMO中的“Enter Your Name”的颜色与用户实际输入的文字颜色不一样,稍微浅了一点。
  3. labelColor:该控件作为Label显示时的颜色,默认值为white
  4. inputBorderColor:该控件作为Input显示时的边框颜色,默认值为black
  5. inputBgColor:该控件作为Input显示时的背景颜色,默认值为#f2f2f9(淡蓝色)。

使用InPlaceEditingInput控件要注意以下几点:

  1. ScriptManager中要添加InPlaceEditingInput.js文件的引用。
  2. 作为InPlaceEditingInput控件的源DOM元素必须为input或者textarea
  3. 您应该为每个InPlaceEditingInput控件指定toolTipText属性,以带来好的用户体验。

该控件的主要开发思路为:

  1. 充分利用Atlas提供的强大的JavaScript面向对象功能,继承于Sys.UI.TextBox类。
  2. 捕获HTMLonmouseoveronmouseoutonfocus以及onblur事件,并应用相应的CSS样式。

该控件的源代码以及开头部分示例程序可以在此下载:http://files.cnblogs.com/dflying/InPlaceEditingDemo.zip

posted on 2006-04-22 14:45 Dflying Chen 阅读(3161) 评论(28)  编辑 收藏 所属分类: ASP.NET AJAX (Atlas)

评论:
#1楼  2006-04-22 23:37 | 维生素C.NET      
cool stuff`
我觉得可以翻成"即时编辑"
  回复  引用  查看    
#2楼  2006-04-23 00:39 | 夏林 [未注册用户]
谢谢分享,谢谢老爷
  回复  引用    
#3楼 [楼主] 2006-04-23 06:45 | Dflying Chen      
@维生素C.NET
但是in place有“原位”的意思啊……如果翻译成“即时”怕是显示不出来……
  回复  引用  查看    
#4楼 [楼主] 2006-04-23 06:45 | Dflying Chen      
@夏林
其实是很简单的
  回复  引用  查看    
#5楼  2006-04-23 12:38 | 装配脑袋      
就地编辑
  回复  引用  查看    
#6楼  2006-04-23 12:41 | 装配脑袋      
PS.开始没注意那个Flash是会动的,那“敲键盘”的声音差点没把我吓死,还以为音箱坏了
  回复  引用  查看    
#7楼  2006-04-23 13:01 | edison1024      
就地编辑这个翻译不错,信达。
  回复  引用  查看    
#8楼  2006-04-23 14:54 | chuanzai [未注册用户]
一般用于什么场景?
  回复  引用    
#9楼 [楼主] 2006-04-23 15:14 | Dflying Chen      
@装配脑袋
@edison1024
“就地编辑”确实够信达,但有些容易联想到“就地解决”,似乎不大雅啊…………:(
  回复  引用  查看    
#10楼 [楼主] 2006-04-23 15:15 | Dflying Chen      
@装配脑袋
不好意思,我声音没开,录制的时候也没注意到加入了声音…………
  回复  引用  查看    
#11楼 [楼主] 2006-04-23 15:17 | Dflying Chen      
@chuanzai
一些界面空间有限的地方,它可以将Label和TextBox结合在一起,省掉其中一个的空间。
  回复  引用  查看    
#12楼  2006-04-23 18:20 | shalala      
如果可以做成类似于flickr上面的那样,就非常完美了:)
  回复  引用  查看    
#13楼 [楼主] 2006-04-23 18:46 | Dflying Chen      
@shalala
谢谢,不过是flickr上面的哪个啊?
  回复  引用  查看    
#14楼  2006-04-23 19:17 | windwolf      
google calender就用了这种方式
  回复  引用  查看    
#15楼 [楼主] 2006-04-23 19:29 | Dflying Chen      
@windwolf
是的,好多网站都曾经用过,不过把它抽象成Atlas控件可以更好的复用。
  回复  引用  查看    
#16楼  2006-04-24 08:48 | shalala      
flickr的图片标题、描述都是用InPlaceEditor的方式。在MouseOver的时候会有明黄色的提示,点击出现编辑界面,带有确定和取消,确定后完成编辑的那种。
  回复  引用  查看    
#17楼 [楼主] 2006-04-24 09:37 | Dflying Chen      
@shalala
这个在MouseOver的时候也有边框提示出现,但上面的Flash没有录下来…………
  回复  引用  查看    
#18楼  2006-04-25 13:08 | 飞天神猪 [未注册用户]
怎么录制Flash啊~
  回复  引用    
#19楼 [楼主] 2006-04-25 13:42 | Dflying Chen      
@飞天神猪
我使用了一个叫Flash Cam的软件
  回复  引用  查看    
#20楼  2006-04-25 15:13 | 丁丁猫转世 [未注册用户]
不是很明白是在什么时候提交的数据,是在Submit的时候吗,但是用到了Atlas应该不会,那为什么会有一个按钮呢?
  回复  引用    
#21楼 [楼主] 2006-04-25 15:34 | Dflying Chen      
@丁丁猫转世
这个按钮只是为了界面看起来像一个真正的程序,其实没有用的。
  回复  引用  查看    
#22楼  2006-04-28 23:29 | PL [未注册用户]
例子中每个Input都要有Id,然后在components中在指向该Id.
如果想要Input动态加载的,要怎么处理呢?
  回复  引用    
#23楼 [楼主] 2006-04-29 09:10 | Dflying Chen      
@PL
可以使用JavaScript编程的方式添加Atlas控件,而不是使用上面的XML声明方式。
  回复  引用  查看    
#24楼  2006-04-29 16:23 | PL [未注册用户]
可以具体的写点代码吗?谢谢了.
  回复  引用    
#26楼  2006-09-11 21:02 | leoxu [未注册用户]
有个专门的JS框架, EditInPlace.js
我的BLOG上有个介绍,有兴趣的朋友可以去看看.
http://www.oshow.org/?tid=143
  回复  引用    
#27楼  2007-07-02 17:59 | 特 [未注册用户]
共 产 党0岁
  回复  引用    

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-05-09 11:58 编辑过


相关链接: