Heim  >  Artikel  >  php教程  >  php实现input输入框失去焦点自动保存输入框的数据

php实现input输入框失去焦点自动保存输入框的数据

WBOY
WBOYOriginal
2016-05-25 16:44:582034Durchsuche

最近做一个输入框失去焦点时自动保存数据的功能,当然就是jQuery选择器选择input,blur时,ajax提交数据给php文件,php文件保存一下数据,主要是要注意一下中文的问题,所以中间需要转一下编码.

下面的实例是一个列表页,有一点类似excel了,html代码如下:

<table width="100%" align="left" border="0" cellspacing="0" bgcolor="#CCCCCC"> 
<tr onmouseover="this.className=&#39;on&#39;;" onmouseout="this.className=";" align="center" id="{$id}" bgcolor="#FFFFFF"> 
<td >{$id}</td> 
<td ><input type="text" id="title_{$id}" value="{$title}"  onblur="ajaxEdit(&#39;{$id}&#39;,&#39;title&#39;);" ></td> 
<td ><textarea id="description_{$id}"  rows="4"  onblur="ajaxEdit(&#39;{$id}&#39;,&#39;description&#39;);" >{$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==&#39;ajaxSave&#39;) 
{ 
    $value = urldecode(AutoCharset($value,"UTF-8","GB2312")); 
    //更新主表 
    $inQuery = "UPDATE `#@__archives` SET $field=&#39;$value&#39; WHERE id=&#39;$aid&#39;"; 
    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(&#39;content&#39;); 
    </script>

在发表页面或编辑页的最后加入js调用标签:

 

<script type="text/javascript" src="localStorag.js"></script>

localStorag.js 的代码如下:

/*注意: 本js脚本请在网页源代码最后的地方放置*/ 
if (!window.localStorage) {
    alert(&#39;您的浏览器不支持 localStorage 技术!&#39;);
} else {
    var spanObj = document.getElementById(&#39;s1&#39;);
    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 = &#39;(数据保存于: &#39; + YMDHMS + &#39;)&#39;;
                setTimeout(function () {
                    spanObj.innerText = &#39;&#39;;
                }, 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兼容方案.


本文地址:

转载随意,但请附上文章地址:-)

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP验证码生成例子 Nächster Artikel:PHP查询ip所在地的几种方法