최근 백엔드 기능 개발을 하다가 정렬 필드를 수정하던 중 정렬 값만 수정하기 위해 편집 페이지에 다시 들어가야 하는 번거로움을 느껴서 인터넷에서 정보를 찾아 jquery를 작성해 봤습니다. 더블클릭 구현. 정렬 값을 직접 수정하는 효과:
html 코드:
<div title="【双击可直接修改】" class="changeSort" id="{$id}">{$sort}</div>
JS 코드:
<script type="text/javascript"> //双击修改排序 $('.changeSort').dblclick(function(){ var url = "{:U('setSort')}"; var td = $(this); var id = td.attr('id'); var text = td.text(); var txt = $("<input type='text' class='input-small' >").val(text); txt.blur(function(){ // 失去焦点,保存值。于服务器交互自己再写,最好ajax var newText = $(this).val(); $.ajax({ url:url, type:'POST', data:{'tid':id,'sort':newText}, dataType:'json', success:function(res){ if(res.flag==1){ layer.msg(res.msg); // 移除文本框,显示新值 $(this).remove(); td.text(newText); }else if(res.flag==3){ layer.msg(res.msg); txt.val(newText); } } }); }); td.text(""); td.append(txt); }); </script>
PHP 코드:
<?PHP /** * ajax 设置排序值 */ public function setSort(){ if(IS_POST){ $tid = I('post.tid'); $sort = I('post.sort'); if(!is_numeric($sort)){ $arr = array( 'flag'=>3, 'msg'=>'请输入数字', 'link'=>'', 'content'=>'' ); $this->ajaxReturn($arr); } $data = array( 'id'=>$tid, 'sort'=>$sort ); $this->mod_sort = M('Sort'); $res = $this->mod_sort->save($data); if($res){ $arr = array( 'flag'=>1, 'msg'=>'排序值设置成功', 'link'=>'', 'content'=>'' ); }else{ $arr = array( 'flag'=>2, 'msg'=>'排序值设置失败', 'link'=>'', 'content'=>'' ); } }else{ $arr = array( 'flag'=>0, 'msg'=>'请求非法!', 'link'=>'', 'content'=>'' ); } $this->ajaxReturn($arr); } ?>
효과는 다음과 같습니다.
위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.