我有一个以div和span显示文本的页面。在每个旁边,我都有一个用户可以点击的图像。
当他们点击此图片时,我需要将文本更改为文本区域,以便用户可以编辑文本,然后当他们点击它时,需要调用php脚本通过ajax保存到DB。
所有div和图像都有唯一的ID,因此使用jquery选择器可以更轻松。
有人可以帮忙吗?到目前为止,我所尝试的一切都没有真正奏效。
由于
答案 0 :(得分:0)
你可以使div可编辑:
$(".ajax-div .on-img").on("click",function(ev) {
$(this).parent().find(".editable-text").attr("contenteditable", "true").after("<button onclick='saveEdits()'>Save</button>");
})
你的html结构必须看起来像这样
<div class="ajax-div" id="somediv">
<div class="editable-text">Editable text</div>
<img class="on-img" src="" alt="">
</div>
saveEdits()函数:
function saveEdits() {
$(".ajax-div").each(function() {
if(this.hasAttr("contenteditable") && this.attr("contenteditable")==true) {
id = $(this).attr("id");
//handle change
}
})
}
答案 1 :(得分:0)
假设你有:
<div id='mydivparent'>
Some text here
<div>
<img src='images/mypic.jpg' id='mydiv' onclick='editr(this)' />
</div>
</div>
按照您的要求建议,一种足以满足以下JS代码的方法。
<script>
function editr(obj)
{
var id = $(obj).attr('id');
var text = $('#mydiv'+parent).text();
$('#mydiv'+parent).empty();
$('#mydiv'+parent).append('<form action='form_processor.php' onsubmit="send_ajax($('textarea#'+id+').value)"><textarea id='+id+'>'+text+'</textarea><input type='submit' value='Save Text'></form>');
}
function send_ajax(txtValue){
$.ajax({
url: 'form_processor',
cache: false;
type: 'POST',
data: {'text': txtValue},
success: function(){
//Code to add the text to the div and delete the textarea returning it to a normal div
}
});
return false;
}
</script>
您应该记住如何命名div和图像ID,以便从图像ID中轻松访问div的id。您应该使用自己的协议,这样如果您有图像ID,您可以获得相关的div id,或者您可以将图像放在div中,这样就可以像选择PARENT一样简单。
编辑完成后,您可以在用户之后将其设置为ajax。
代码并不能完全涵盖所有情况,例如,如果您在保存第一个打开的textarea之前单击另一个图像,但我相信它会让您在应该采取的方法上走上正确的道路。
答案 2 :(得分:0)
我最后使用了jeditable插件来为找到这篇文章的人解决这个问题