我试图创建一个表单,允许用户编辑它,类似于旧的Facebook配置文件编辑风格。我无法弄清楚如何同时更改一节中的所有元素。我可以一次编辑一个,但不是全部。多个可编辑的字段使用jQuery单击一次
HTML:
<div id="wrapper">
<section id="core">
<div class="profileinfo">
<div class="gear">
<label>Primary E-Mail:</label><br />
<span id="pemail" class="datainfo">[email protected]</span>
<a href="#" class="editlink">Edit Info</a>
<a class="savebtn">Save</a>
</div>
<div class="gear">
<label>Full Name:</label><br />
<span id="first" class="datainfo">Johnny</span>
<span id="middle" class="datainfo">James</span>
<span id="last" class="datainfo">Appleseed</span>
<a href="#" class="editlink">Edit Info</a>
<a class="savebtn">Save</a>
</div>
<div class="gear">
<label>Birthday:</label><br />
<span id="birthday" class="datainfo">August 21, 1989</span>
<a href="#" class="editlink">Edit Info</a>
<a class="savebtn">Save</a>
</div>
<div class="gear">
<label>Address:</label><br />
<span id="address1" class="datainfo">123 Test Lane</span><br />
<span id="address2" class="datainfo">APT 104</span><br />
<span id="city" class="datainfo">Anywhere</span>
<span id="state" class="datainfo">FL</span>
<span id="zip" class="datainfo">55555</span>
<a href="#" class="editlink">Edit Info</a>
<a class="savebtn">Save</a>
</div>
<div class="gear">
<label>Occupation:</label><br />
<span id="occupation" class="datainfo">Freelance Web Developer</span>
<a href="#" class="editlink">Edit Info</a>
<a class="savebtn">Save</a>
</div>
</div>
</section>
</div>
的Javascript:
$(document).ready(function(){
$(".editlink").on("click", function(e){
e.preventDefault();
var dataset = $(this).prev(".datainfo");
var savebtn = $(this).next(".savebtn");
var theid = dataset.attr("id");
var newid = theid+"-form";
var currval = dataset.text();
dataset.empty();
$('<input type="text" name="'+newid+'" id="'+newid+'" value="'+currval+'" class="hlite">').appendTo(dataset);
$(this).css("display", "none");
savebtn.css("display", "block");
});
$(".savebtn").on("click", function(e){
e.preventDefault();
var elink = $(this).prev(".editlink");
var dataset = elink.prev(".datainfo");
var newid = dataset.attr("id");
var cinput = "#"+newid+"-form";
var einput = $(cinput);
var newval = einput.attr("value");
$(this).css("display", "none");
einput.remove();
dataset.html(newval);
elink.css("display", "block");
});
});
编辑
这是类似于我希望它看起来像一个形象:
如何建立编辑每个部分的能力?这里有一个JSFiddle供您查看。
对于我们不熟悉“旧式Facebook配置文件编辑”的人,您能否详细说明您的要求?如果我点击其中一个现在没有发生的“编辑信息”链接,会发生什么? – dgvid 2013-02-11 20:32:45
我添加了一个图像作为参考 – 2013-02-11 20:40:12