黔东南网络公司:使用Ajax的脸谱网风格内联配置文件编辑字段

发布时间2020-03-28    阅读:292    作者:黔东南网站设计开发公司

标准的脸谱网布局在社交媒体的粉丝中是众所周知的。网站上的许多动态表单字段启动了Ajax驱动的后端脚本的巨大趋势。现在我们可以看到开源PHP开发人员为WordPress、Drupal或JooMLA等几十个平台提供他们的代码示例。

黔东南网络公司在本教程中,我将重点放在构建一个简单的jQuery内联编辑字段。我们不会在本地存储任何数据,而是可以在每个编辑之后直接在页面上更新HTML数据。可以将其绑定到MySQL数据库并将所有这些值存储为缺省值。但是现在让我们只对前端功能进行编码。


建立文件


首先,让我解释一下我正在使用的文档结构。我有3个单独的文件。索引文件 ,样式表profile.js在头部区域,我还包括了最新的外部参考。JQuery 1.7.2库 .

?
One
Two
Three
Four
Five
Six
Seven
Eight
Nine
Ten
<!doctype html>
<HTMLlang="en"&#62;
<头部>
  <metahttp-equiv=“内容类型”content="text/html; charset=utf-8"&#62;
  <title>FB-Style Inline Edit Fields</title&#62;
  <meta姓名=“作者”content="Jake Rocheleau"&#62;
  <linkrel=“样式表”type="text/css"href=“风格CSS”>
  <script类型=“文本/ JavaScript”src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script&#62;
  <script类型=“文本/ JavaScript”src="profile.js"></script&#62;
</头部>

因为我们使用HTML5 DOCTYPE,所以我尝试利用这些额外的元素。html5shiv script如果您希望支持旧的传统浏览器,那么它也是一个选项。大多数IE9之前发布的Internet Explorer将不支持所有更新的HTML5元素。

?
One
Two
Three
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->

表格输入块

核心内容的大部分被分解成这些元素。页眉、页脚、段落和文本块构成了我们演示布局的大部分。但是更具体地说,我们应该快速浏览一下我是如何构建输入区域的。

我有一组用“齿轮”标记的div元素。当您第一次加载页面时,这包括一些默认值,每次刷新这些默认值都会被再次设置。

?
One
Two
Three
Four
Five
Six
<divclass="gear"&#62;
  <label>Full Name:</label&#62;
  <span身份证件="fullname"class="datainfo">Johnny Appleseed</span&#62;
  <ahref=&#34;Wei&#34;class="editlink">Edit Info</a&#62;
  <a=“萨维本”>Save</>
</div>

我使用了一些其他的内部类,以后我们可以使用jQuery来实现。DATANEFO类应用于包含用户值的每个跨度元素。每个跨度也有唯一的ID,因此我们可以引用正确的名称/值对。

编码显示样式

我们应该快速浏览一下简单的CSS样式表中的一些重要元素。大多数有趣的属性都是在编辑/保存按钮上设置的。例如,我们需要先隐藏保存按钮,直到用户点击相关的“编辑”链接。

?
One
Two
Three
Four
Five
/** @group buttons **/
.savebtn {位置:绝对的;正确的:Zero;上衣:13PX;衬垫:4PX9px;background:#5972a8;font-size:1.2em;cursor:pointer;border:1px固体#1a356e;color:#fff; -webkit-box-shadow:insetZero1pxZero#8a9cc2; -moz-box-shadow:insetZero1pxZero#8a9cc2盒影:insetZero1pxZero#8a9cc2;margin-bottom:5px;margin-top:-5px;display:none;
}
.savebtn:hover {颜色:γ-FFF;背景:γ607dB7;文本装饰:; }
.savebtn:active {背景:#556790; }

许多CSS样式是为了模仿旧的脸谱网按钮而创建的。编辑链接是一个稍微不同的故事,但是我们可以使用jQuery更新这些CSS属性。

?
One
Two
Three
Four
Five
Six
Seven
Eight
Nine
Ten
Eleven
.profileinfo {背景:F2F2F2;宽度:100%;衬垫:4PX10px;border-left:1px固体#b3b3b3;border-right:1px固体#b3b3b3;border-bottom:1px固体#b3b3b3;}
.profileinfo hTwo{位置:相对的;左边:-250px; }
.gear {位置:相对的;显示:;边缘底部:25PX;底部间隙:15PX;边界底部:1PXsolidD9D9D9; }
.gear a.editlink {位置:绝对的;正确的:Zero;上衣:13PX; }
.datainfo {左边余量:10px;字体大小:11px;颜色:#333; }
label {显示: inline-;字体加粗:大胆的;颜色:#696969;字体大小:12px;宽度:100px; }
.hlite {背景:αE2E8F6;边境:1PXsolid#bdc7d8;宽度:250px;左边余量:-7PX;衬垫:4PX7px;color:#565656;font-size:12px;}

最后一段代码查看了几个内部CSS类。齿轮标签元素具有显示这些输入表单的特殊属性。我已经设置了所有显示在同一块区域上的内联线,然后当你点击“编辑”时,输入字段就放在同一个显示器的内部。

DOM脚本操作

了解基本的页面结构对于我们进入jQuery代码是至关重要的。您希望事先有一个计划,这样您就知道如何攻击这个问题。DATANEFO使用输入字段,用户可以编辑和保存更改。

?
One
Two
Three
Four
Five
Six
Seven
Eight
Nine
Ten
Eleven
Twelve
Thirteen
Fourteen
Fifteen
Sixteen
$(document).ready(功能(){
  $(".editlink""click",function(e){
    e.preventDefault();
    vardataset = $().prev(“达坦福”);
    varsavebtn = $().next(“SaveBtn”);
    vartheid   = dataset.attr(“ID”);
    varnewid   = theid+“-形”;
    varcurrval = dataset.text();
    DataSet;
    $('<input type="text" name="'+newid+'" id="'+newid+'" value="'咖哩'" class="hlite">').appendTo(dataset);
    $(this)CSS("display","none");
    savebtn.css("display","block");
  };

整个函数块包含了每当用户单击任何编辑链接时运行的代码。首先,我们防止URL加载HREF属性中的任何值。然后,我设置了一组本地变量,这些变量访问DATANEFO萨维通所有在同一个齿轮输入。

在拖动当前文本值之后,我们完全擦除内部HTML。空()然后,我构建了一个基本输入字段,它与数据信息中显示的值相同。.appendTo()在这个元素上,我可以选择任何一个DOM容器来存储这个新的输入字段。很明显,最后一步是隐藏编辑链接并显示保存按钮。

你可以看到,除了一个离群值之外,这都是相当简单的。我不使用任何传统的表单元素或提交输入按钮,主要是因为我们没有后端绑定到脚本中。但是,即使我们保存到数据库,我仍然只使用输入字段,因为我们不需要一个完整的表单来提交任何数据。我能看到的唯一原因是支持使用JavaScript禁用的旧版本浏览器。

保存用户更改


这最后一片profile.js脚本包含每当用户点击“保存”按钮时运行的所有代码。事件Debug()因此浏览器没有加载HREF值。

有些变量需要很难处理当前输入字段值。但是我们在清除输入元素之前将其存储起来,然后将值添加为纯文本。所有这些命令都是在本地完成的。DATANEFO容器

?
One
Two
Three
Four
Five
Six
Seven
Eight
Nine
Ten
Eleven
Twelve
Thirteen
Fourteen
Fifteen
Sixteen
Seventeen
  $(".savebtn""click",function(e){
    e.preventDefault();
    varelink   = $().prev(".editlink");
    vardataset = elink.prev(“达坦福”);
    varnewid   = dataset.attr(“ID”);
    varcinput  =&#34;Wei&#34;+newid+“-形”;
    vareinput  = $(cinput);
    varnewval  = einput.attr(“价值”);
    $(this)CSS("display","none");
    einput.remove();
    dataset.html(newval);
    elink.css("display","block");
  };
});

当引用时美元(这个)我们现在指的是保存按钮,所以最后几行隐藏了保存按钮并完全删除了输入字段,然后在点击保存之前,用任何存储的值替换输入。最后,我们希望重新显示编辑链接,以便用户可以返回并在需要时进行进一步的编辑。

这是一个非常简单的过程,一旦你理解了这个计划,以及如何处理整个脚本。Ajax()然后,在其他PHP后端文件中,您可以处理所有的数据库查询,而不必触摸脚本的任何其他部分。


闭幕思想

黔东南网络公司希望这个教程可以帮助你了解更多关于DOM操作的知识。如果你有足够的时间来编写一个合适的解决方案,你可以做很多事情。而且随着开源库的增加,比以往任何时候都更容易缩放功能。

如果你还没有看过现场演示,你应该尝试检查上面的链接,或者下载我的源代码的副本。很容易通过自己的自定义更改。然后你可以在你的网站上甚至在将来的Web项目中实现类似的方法。如果你有任何进一步的评论或想法,可以自由地分享到下面的讨论区。


QQ客服
胡经理