最近做一個輸入框失去焦點時自動儲存資料的功能,當然就是jQuery選取器選擇input,blur時,ajax提交資料給php檔案,php檔案儲存一下資料咯。主要是要注意一下中文的問題,所以中間需要轉一下編碼。
下面的執行個體是一個列表頁,有一點類似excel了。
html代碼:
代碼如下 |
複製代碼 |
<table width=”100%” align=”left” border=”0″ cellspacing=”0″ bgcolor=”#CCCCCC”> <tr onmouseover=”this.className=’on’;” onmouseout=”this.className=”;” align=”center” id=”{$id}” bgcolor=”#FFFFFF”> <td >{$id}</td> <td ><input type=”text” id=”title_{$id}” value=”{$title}” onblur=”ajaxEdit(‘{$id}’,'title’);” ></td> <td ><textarea id=”description_{$id}” rows=”4″ onblur=”ajaxEdit(‘{$id}’,'description’);” >{$description}</textarea></td> <td ><a href=”view.php?aid={$id}” target=”_blank”>預覽</a><a href=”edit.php?aid={$id}”>編輯</a></td> </tr> </table> |
js代碼:
代碼如下 |
複製代碼 |
<script type=”text/javascript”> function Dd(i) {return document.getElementById(i);} function ajaxEdit(aid,field){ var value = decodeURI(Dd(field+”_”+aid).value); $.ajax({ type: “POST”, url: “edit.php”, data: {dopost:”ajaxSave”,aid:aid,field:field,value:value}, success: function(data){ if(data==”true”){//更新成功 Dd(field+”_”+aid).style.border=”#fff”; }else{//更新失敗 alert(“更新失敗,可能是網速太慢”); } } }); } </script> php代碼:(引用了dedecms的函數、方法) if($dopost==’ajaxSave’) { $value = urldecode(AutoCharset($value,”UTF-8″,”GB2312″)); //更新主表 $inQuery = “UPDATE `#@__archives` SET $field=’$value’ WHERE id=’$aid’”; if($dsql->ExecuteNoneQuery($inQuery))//www.111cn.Net { echo “true” ; exit; }else{ echo “false”; exit; } } |