使动态内容在提交后可编辑
jQuery: Make dynamic content editable after submission
我有一个表单,用户可以提交一些值,它们被存储在一个列表中,用逗号分隔,像这样:
<li>
<span>
Harvard,Marketing,2009,2014
</span>
<br><a>[Remove]</a>
<br><a>[Edit]</a>
</li>
//output
Harvard,Marketing,2009,2014
[Remove]
[Edit]
- 当点击[编辑]时,我想显示表单替换列表空间的值在跨度填充输入显示在新表单中,以便用户可以修改它们并再次保存。我怎样才能做到这一点呢?
jsFiddle上的完整代码: http://jsfiddle.net/YueX2/
请运行它,这样你就可以看到它是如何工作的,只需点击"添加另一个",然后点击"保存"按钮。
有点乱,但应该给你一个如何做到这一点的想法。
对"li"的给定模板进行了稍微修改
<li>
<span>
Harvard,Marketing,2009,2014
</span>
<br><a href="#" class="remove">[Remove]</a>
<br><a href="#" class="edit">[Edit]</a>
</li>
代码可以像这样:
$('.edit').click(function(){
var parent = $(this).parent();
//get the String from the span element
var values = $.trim( parent.find('span').text() );
//and plit them
values = values.split(',');
//prepend an container to hold the inputs
parent.prepend('<div class="editCont"></div>');
var container = parent.find('.editCont');
//create inputs for each of the seperated values
for(var v in values){
container.append('<input type="text" value="'+values[v]+'" /><br>');
}
//create save link and bind click event to it
container.append('<a href="#" class="editContButton" >save</a><br>');
parent.find('.editContButton').click(function(){
//collect all values from the inputs
var text = [];
var inputs = container.find('input');
for(var i = 0; i < inputs.length; i++){
text.push( $(inputs[i]).val() );
}
parent.find('span').show();
//replace the text in the span element and remove container with inputs again
parent.find('span').text( text.join(",") );
container.remove();
})
parent.find('span').hide();
});
如果单击Edit, span中的文本将被分割,并为每个条目创建一个输入,并在最后添加一个保存链接。如果点击链接,输入将被连接到一个字符串中,并取代刷出中的旧文本。
spawn的隐藏和取消隐藏是可选的;)
单击edit时,可以拆分该span的内容,因为它已经用逗号分隔了。然后,您可以获取新的输入并在保存时将其应用于span。我编辑了你的编辑功能,增加了一个新的保存功能。
//existing edit method
$(document).on('click', '.edit', function () {
//hides edit and remove buttons
$(".removeParent, .edit").hide();
//splits span into separate terms
var terms = $(this).siblings("span").html().split(",");
//makes new form
$(this).parents("li").append("<input id='edit1' type='text' value=" + terms[0] + ">" + "<input id='edit2' type='text' value=" + terms[1] + ">" + "<input id='edit3' type='text' value=" + terms[2] + ">" + "<input id='edit4' type='text' value=" + terms[3] + "><input type='button' class='saveEdit' value='Save'>");
});
//additional save method
$(document).on('click', '.saveEdit', function () {
//unhides edit and remove buttons
$(".removeParent, .edit").show();
//makes the new string for the span
var newString = $("#edit1").val()+","+$("#edit2").val()+"," +$("#edit3").val()+","+$("#edit4").val();
//replaces the html of the span with the new string
$(this).siblings("span").html(newString);
//hides new form and save button
$(this).hide();
$("#edit1, #edit2, #edit3, #edit4").hide();
});
相关文章:
- 在最后按钮之前禁止提交表单-避免编辑页面
- 提交带有鸟舍编辑图像的表格
- 编辑我在表单字段中提交的项目
- 当我以带有编辑和删除按钮的表单提交时,显示所有值
- 验证器仅在重新编辑字段(包括 PHP)时接受提交
- 提交编辑时,值从对话框变为空
- CKEditor只在编辑器中正确插入图像,但在提交后不会在网页上显示图像
- Angularjs:我想编辑提交到我的后端nodejs>Mongodb.我应该遵循的最佳设计是什么
- 根据编辑的栏,将电子邮件发送到以前的谷歌表单提交
- 使用内容可编辑来提交ajax和PHP的更改
- APEX模态页面插件没有'不允许多个提交/编辑而不刷新
- 我想在提交之前创建一个复选框来编辑 mutilple 文件上传输入字段的 Slected 文件
- 让我的JavaScript文本编辑器提交
- 当我从编辑表单提交详细信息时,LocalStorage不更新
- 让span元素提交一个编辑表单
- 编辑CSS如果文本输入空提交
- Textarea不能用wysiwyg编辑器提交到MySQL
- 如何在Wordpress中编辑提交按钮
- 停止输入键提交也停止输入键在多行文本编辑
- 使动态内容在提交后可编辑