0

我想创建脚本来编辑画廊中的照片。我有文本框来插入照片的标题,在其中插入标题并留下文本框后,它将在数据库中更新。它工作正常,当我只更改一张照片的标题时,但是当我更改更多标题然后我重新加载页面时,所有更改的照片都有相同的标题(最后插入)。有人可以帮我看看有什么问题吗?

我现在使用的代码是:

function UpdateTitle(idPhoto) {
    var id = idPhoto;
    $(document).ready(function(){
        $('textarea').live('blur',function () {
            var titleVal = $(this).val();        

            $.ajax({
                 type: "POST",
                 url: "changeTitle.php",
                 data: {title:titleVal , id:id},
                 success: function(msg) {
                     $('.'+id).html(msg);
                 }
           })

       });
    });     
}

<textarea name='title' id='title' onchange='UpdateTitle($idPhoto);' rows='2' cols='22'>$title</textarea>
4

2 回答 2

2

更多的是一个好的编程技巧,而不是回答这个问题,因为它已经被回答了,但这会更干净:

$('textarea').on('blur',function () {
    var titleVal = $(this).val(), id = $(this).data('id');        

    $.ajax({
         type: "POST",
         url: "changeTitle.php",
         data: {title:titleVal , id:id},
         success: function(msg) {
             $('#'+id).html(msg);
         }
   })
});

使用此 HTML:

<textarea name='title' id='title' data-id='$idPhoto' rows='2' cols='22'>$title</textarea>

会工作得更好,而且不会那么混乱。

于 2012-06-26T08:30:17.863 回答
1

使用$('#'+id)代替$('.'+id)

并使用val而不是html填充文本区域。

所以基本上你应该有

$('#'+id).val(msg); 

(假设味精直接是预期的内容)

但是live现在已经被弃用了。建议您使用on,如下所示:

 $(document).on('blur', 'textarea',function () { // something more precise than "document" would be better
于 2012-06-26T08:23:43.277 回答