0

ギャラリーで写真を編集するスクリプトを作成したいと考えています。写真のタイトルを挿入するテキストボックスがあり、タイトルを挿入してテキストボックスを残した後、データベースで更新されます。タイトルを1枚の写真だけ変更すると問題なく動作しますが、さらにタイトルを変更してからページをリロードすると、変更されたすべての写真に同じタイトルが付けられます(最後に挿入されました)。誰かが私を助けてくれますか?

私が今使っているコードがあります:

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は非推奨になりました。このように、で使用することをお勧めします:

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