Jquery编辑文本,然后使用ajax保存到DB

时间:2012-10-22 10:25:28

标签: php javascript jquery

我有一个以div和span显示文本的页面。在每个旁边,我都有一个用户可以点击的图像。

当他们点击此图片时,我需要将文本更改为文本区域,以便用户可以编辑文本,然后当他们点击它时,需要调用php脚本通过ajax保存到DB。

所有div和图像都有唯一的ID,因此使用jquery选择器可以更轻松。

有人可以帮忙吗?到目前为止,我所尝试的一切都没有真正奏效。

由于

3 个答案:

答案 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插件来为找到这篇文章的人解决这个问题