これにアプローチする最も効率的な方法についての推奨事項を本当に感謝します。
レコードのリストを表示し、ユーザーがレコード行の「編集」リンクをクリックしてレコードを編集できるようにする単純な JavaScript アプリケーションを構築しています。ユーザーは、[追加] リンクをクリックしてダイアログを開き、新しいレコードを追加することもできます。
これは、これの実用的なプロトタイプです: http://jsfiddle.net/FfRcG/
[編集] をクリックすると、いくつかの既定の値を含むダイアログがポップアップ表示されます。また、[追加] をクリックすると、値が空のダイアログ ボックスが表示されます。
2 つの問題にアプローチする方法について助けが必要です
インデックスを編集ダイアログに渡し、JSON 内の値を参照する必要があると思いますが、ユーザーが編集をクリックしたときにインデックスを渡す方法がわかりません。
Edit と Add の div コンテンツが非常に似ているのが気になります (Edit は値を事前入力するだけです)。これを行うより効率的な方法があるように感じますが、途方に暮れています。
これが参照用の私のコードです
$(document).ready( function(){
// Our JSON (This would actually be coming from an AJAX database call)
people = {
"COLUMNS":["DATEMODIFIED", "NAME","AGE"],
"DATA":[
["9/6/2012", "Person 1","32"],
["9/5/2012","Person 2","23"]
]
}
// Here we loop over our JSON and build our HTML (Will refactor to use templating eventually)
members = people.DATA;
var newcontent = '<table width=50%><tr><td>date</td><td>name</td><td>age</td><td></td></tr>';
for(var i=0;i<members.length;i++)
{
newcontent+= '<tr id="member'+i+'"><td>' + members[i][0] + '</td>';
newcontent+= '<td>' + members[i][1] + '</td>';
newcontent+= '<td>' + members[i][2] + '</td>';
newcontent+= '<td><a href="#" class="edit" id=edit'+i+'>Edit</a></td><td>';
}
newcontent += "</table>";
$("#result").html(newcontent);
// Bind a dialog to the edit link
$(".edit").click( function(){
// Trigger our dialog to open
$("#edit").dialog("open");
// Not sure the most efficient way to change our dialog field values
$("#name").val() // ???
alert($());
return false;
});
// Bind a dialog to the add link
$(".edit").click( function(){
// Trigger our dialog to open
$("#add").dialog("open");
return false;
});
// Bind a dialog to our edit DIV
$("#edit").dialog();
// Bind a dialog to our add DIV
$("#add").dialog();
});
そして、ここにHTMLがあります
<h1>People</h1>
<a href="#" class="add">Add a new person</a>
<!-- Where results show up -->
<div id="result"></div>
<!--
Here's our edit DIV - I am not clear as to the best way to pass the index in our JSON so that we can reference positions in our array to pre populate the input values.
-->
<div id="edit">
<form>
<p>Name:<br/><input type="text" id="name" value="foo"></p>
<p>Age:<br/><input type="text" id="age" value="33"></p>
<input type="submit" value="Save" id="submitEdit">
</form>
</div>
<!--
Here's our add DIV - This layout is so similiar to our edit dialog. What is the
most efficient way to handle a situation like this?
-->
<div id="add">
<form>
<p>Name:<br/><input type="text" id="name"></p>
<p>Age:<br/><input type="text" id="age"></p>
<input type="submit" value="Save" id="submitEdit">
</form>
</div>