03 24 2009

0

mootools的inline编辑

分类: mootools 标签: mootools inline 编辑 阅读: 233

大家可能都见过这种效果,一点击网页中的特定文字,同时就进入编辑状态当编辑完成后。又把编辑后的文字保存到数据库中了。

我使用mootools来实现本次效果。

首先定义javasctipt函数

JavaScript代码
  1. function inlineEdit(el,u,id){  
  2.     var editing;  
  3.     el.addEvent('dblclick',function(){  
  4.         if(editing) return;  
  5.         editing = true;  
  6.         var before = el.get('html').trim();  
  7.         el.set('html','');  
  8.         var input = new Element('input', { 'value':before });  
  9.         input.setStyle('width','95%');  
  10.         input.addEvent('keydown'function(e) { if(e.key == 'enter') { this.fireEvent('blur'); } });  
  11.         input.inject(el).select();  
  12.         input.addEvent('blur'function() {  
  13.             val = input.get('value').trim();  
  14.             var name = el.get('rel');  
  15.             if(before != val){  
  16.                 new Request({  
  17.                     url:u,  
  18.                     onSuccess: function(){el.set('text',val);},  
  19.                     onFailure: function(){el.set('text',before);}  
  20.                 }).send("id="+id+"&"+name+"="+val+"&colname="+name);  
  21.             }else{el.set('text',val);}  
  22.             editing = false;  
  23.         });  
  24.     });   
  25. }  
  26. window.addEvent('domready'function(){    
  27.     $$('.editable').each(function(el){    
  28.         inlineEdit(el,APP+'/User/update',$('uid').get('value'));    
  29.     });    
  30. });   

然后是html

XML/HTML代码
  1. <tr>  
  2.     <td class="cellLabel" align="right" width="20%" >用户名:td>  
  3.     <td class="cellInfo" align="left" width="30%" >{$vo.account}td>  
  4.     <td class="cellLabel" align="right" width="20%" >昵称:td>  
  5.     <td class="cellInfo editable" align="left" width="30%" rel="nickname" >{$vo.nickname}td>  
  6. tr>  
  7. <tr>  
  8.     <td class="cellLabel" align="right" >状态:td>  
  9.     <td class="cellInfo"><select class="small bLeft"  name="status">  
  10.     <option <eq name="vo.status" value="1" >selectedeq> value="1">启用option>  
  11.     <option <eq name="vo.status" value="0" >selectedeq> value="0">禁用option>  
  12.     select>td>  
  13.     <td class="cellLabel" align="right" >备注:td>  
  14.     <td class="cellInfo editable" align="left" rel="remark" >{$vo.remark}td>  
  15. tr>  

我使用的是ThinkPHP和MySQL

PHP代码
  1. public function update(){  
  2.     $colname = $_POST['colname'];  
  3.     if($colname){  
  4.         $dao = D('User');  
  5.         $data['id'] = $_POST['id'];  
  6.         $data[$colname] = $_POST[$colname];  
  7.         $dao->save($data);  
  8.     }else{  
  9.         parent::update();  
  10.     }  
  11. }  

完成了!所有的请求都是AJAX完成的。这里我就不再上传DEMO了。

给大家一张截图吧,有兴趣的朋友可以试试呀。

{$page}
1 条记录 1/1 页
登陆
分类