まず、Javascriptフレームワークを調べます。あなたが話している機能の種類は、あなたが本当にすべてのブラウザで正しく機能するようにするには、あなた自身でこれを行うべきではないということを十分に前進させています。それはまた、あなたのHTMLに醜いインラインJavaScriptがないようにします。これは悪い習慣とみなされます。それは考えています:
「編集」モード "と"ノーマルモード "の行のいずれか?デフォルトでは「編集モード」の行を非表示にすることができます。編集リンクをクリックすると、その行を非表示にして編集した行を表示することができます。これは、編集フォームを取得するためにAJAX呼び出しを行うよりも簡単です。
EDIT
Here's some code to get you started:
function editRow(row_id, callback) {
// you would get this dynamically through ajax, thus why we need the callback
var html = '<tr id="edit_' + row_id + '" class="edit"><td><input type="text" name="td_1" value="Text 1"></td><td><input type="text" name="td_2" value="Text 2"></td><td><input type="submit" name="submit" value="submit"></td></tr>';
callback(html);
}
$('a.edit', '#data').click(function() {
var $tr = $(this).closest('tr');
var id = $tr.attr('id').split('_').pop();
var edit_row = '#edit_' + id;
if($(edit_row).length == 1) { // edit row already exists
$tr.hide();
$(edit_row).show();
} else { // doesn't exist, fetch it
editRow(id, function(html) {
$tr.hide();
$tr.after(html);
});
}
return false;
});
$(window).click(function(e) {
$('tr.edit:visible').each(function() {
var $tr = $(e.target).closest('tr');
var id = $(this).attr('id').split('_').pop();
console.log(e.target, $tr, this);
if($tr.attr('id') != this.id) {
$(this).hide();
$('#row_' + id).show();
}
});
});
私はおそらくあなたのためにこれの多くを行うjQueryのプラグインがたくさんあることに注意してください、そして、あなたのアプリケーションのニーズに応じて、毎回行をフェッチするだけでなく、フェッチしないなどの方が良いかもしれません。これは、あなたが望むものを達成するために何をしなければならないか、そして残りはあなた次第です。 :)
jQueryを使用していますか?私は例として$()呼び出しを持っていますが、フレームワークとjqueryタグの記述はありません。 –
はい、そのJquery。 – TigerTiger
はあなたに役立ついくつかのコードで私の答えを編集しました。 –