特定のテキスト本文をクリックすると、テキスト入力フィールドがポップアップし、ユーザーがフィールドにデータを入力してから、「保存」または「キャンセル」ボタンをクリックして送信できるように設定したいそれぞれデータベースに入れるか、値をリセットします。ただし、「return false」を使用しているにもかかわらず、このコードが繰り返しアクティブになるのを防ぐことはできないようです。
私は die() を使用しましたが、それは機能しますが、ユーザーが保存またはキャンセルした後に元のクリックイベントを再インスタンス化できるようにしたいので、それを機能させる方法が思いつきません。助けてくれてありがとう。
$('td[name]').live("click", function() {
nameof = $(this).attr("name");
idof = $(this).attr("id");
valueof = $(this).html();
$(this).html('<input type="text" name="' + nameof + '" value="' + valueof + '"><input type="hidden" name="id" value="' + idof + '"><span id="save">save</span>   <span id="cancel">cancel</span>');
return false;
});
アップデート:
これが私が最終的に思いついたものです(すべての編集コードを含みます):
$('td[name="grouping"] span, td[name="title"] span').live('click', function() {
nameof = $(this).parent().attr("name");
idof = $(this).parent().attr("id");
valueof = $(this).html();
if($("table td>span").children('input').length > 0) {}
else {
if($(this).children().length > 0) {}
else {
$(this).html('<input type="text" name="' + nameof + '" value="' + valueof + '"><input type="hidden" name="id" value="' + idof + '"><input type="hidden" name="originalinput" value="' + valueof + '"><span class="save">save</span> <span class="cancel">cancel</span>');
}
}
});
$('.cancel').live('click', function() {
$(this).parent().html($(this).siblings('input[name="originalinput"]').attr("value"));
});
$('.save').live('click', function() {
savevalue = $(this).siblings('input[type="text"]').attr("value");
saveid = $(this).siblings('input[name="id"]').attr("value");
savecolumn = $(this).siblings('input[type="text"]').attr("name");
$.ajax({
type: "POST",
url: "../php/adminajax.php",
data: 'id=' + saveid + '&' + savecolumn + '=' + savevalue
});
$(this).parent().html(savevalue);
});
$('#saving').ajaxStart( function() {
$(this).fadeIn(100);
});
$('#saving').ajaxStop( function() {
$(this).fadeOut(2000);
});
私がダウンロードしたものよりもはるかに厄介であると確信していますが、少なくとも AJAX のインプレース編集の基本を知っています。助けてくれてありがとう。