php实现input输入框失去焦点自动保存输入框的数据
自動保存
最近做一个输入框失去焦点时自动保存数据的功能,当然就是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)) { echo "true" ; exit; }else{ echo "false"; exit; } }
ログイン後にコピー
方法二,定时保存草稿功能,防止数据意外丢失.
情况介绍,网站后台编辑器是采用了百度UEditor所见即所得编辑器,我们就是要实现自动定时保存编辑器里的内容.
编辑器的调用方式如下:
<script type="text/plain" id="content" name="content" style="width:800px;height:400px;"></script> <script type="text/javascript"> var editor = new UE.ui.Editor(); editor.render('content'); </script>
ログイン後にコピー
在发表页面或编辑页的最后加入js调用标签:
<script type="text/javascript" src="localStorag.js"></script>
ログイン後にコピー
localStorag.js 的代码如下:
/*注意: 本js脚本请在网页源代码最后的地方放置*/ if (!window.localStorage) { alert('您的浏览器不支持 localStorage 技术!'); } else { var spanObj = document.getElementById('s1'); var saveTimer = setInterval(function () { var str = ""; if (document.all) { /*IE*/ str = document.frames[1].document.body.innerHTML; } else { /*Chrome,ff*/ str = document.getElementById("ueditor_0").contentDocument.body.innerHTML; } if (str.length > 20 && (str.indexOf("。") > -1 || str.indexOf(",") > -1)) { /*有内容才保存 且有句号或逗号*/ localStorage.setItem("ctValue", str); var d = new Date(); var YMDHMS = d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate() + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds(); spanObj.innerText = '(数据保存于: ' + YMDHMS + ')'; setTimeout(function () { spanObj.innerText = ''; }, 5000); } }, 25000); //每隔N秒保存一次 function stoplocs() { clearInterval(saveTimer); //停止保存 //localStorage.removeItem("ctValue"); //清空 } function showlocs() { var html = localStorage.getItem("ctValue"); editor.setContent(html); //alert(localStorage.getItem("ctValue")); } }
ログイン後にコピー
可以增加停止保存按钮或立即恢复按钮,如下:
<a href="javascript:void(0)" onclick="javascript:stoplocs()">停止保存</a> <a href="javascript:void(0)" onclick="javascript:showlocs()">立即恢复</a>
ログイン後にコピー
好了,现在你的网站发表页面/编辑页面就具备自动保存功能了,注意这种方式支持IE8及以上版本的IE,CHROME,Firefox等等大多数主流浏览器,至于IE6,实在是老掉牙了,不在考虑范围内,如果一定要考虑IE6的,请使用上面提供的IE6/ie7兼容方案.
本文地址:
转载随意,但请附上文章地址:-)
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
2週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
1 か月前
By DDD
R.E.P.O.ファイルの保存場所:それはどこにあり、それを保護する方法は?
1 か月前
By DDD
R.E.P.O.最高のグラフィック設定
2週間前
By 尊渡假赌尊渡假赌尊渡假赌
アサシンのクリードシャドウズ:シーシェルリドルソリューション
1週間前
By DDD

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7400
15


Java チュートリアル
1630
14


CakePHP チュートリアル
1358
52


Laravel チュートリアル
1268
25


PHP チュートリアル
1217
29

