ユーザーが独自のプリセットを入力できる多くの入力(テキスト入力、テキストエリア、チェックボックスなど)を含むフォームがあります。現時点では、ユーザーは自分のプリセットを検索でき、ajaxクエリが呼び出され、見つかったプリセットのリストを含むHTMLが返されます。HTMLは(精巧に)PHPファイルで生成され、onclick=""
さまざまなアクションが追加されます。ユーザーはプリセットをクリックすると、フォームにデータが入力されます。
生成されたHTML(ページに配置される)の例は次のようになります。
<a onclick=" $('#AgendaItemName').val('Preset 1'); $('#AgendaItemOpmerking').val(''); $('#AgendaItemLokaalID').val(''); $('#AgendaItemPlaats').val(''); $('#AgendaItemBegeleidendeLeerkrachten').val(''); $('#AgendaItemDoelgroep').val(''); $('#AgendaItemIsPubliek').val('1'); $('#AgendaItemLesFicheAbonnementID').val(''); $('#AgendaItemAgendaItemTypeID').val('2'); $('#AgendaItemAgendaItemPublicatieTypeID').val(''); $('#AgendaItemLeergebiedID').val('1'); $('#AgendaItemLeerdomeinID').val('1'); $('#AgendaItemLessenTaken').val(''); $('#AgendaItemVerloop').val('Test verloop\r\n\r\ntest opslaan vanuit agendaitem'); $('#AgendaItemBeginsituatie').val(''); $('#AgendaItemMateriaal').val(''); $('#AgendaItemEvaluatie').val('Test evaluatie'); $('#AgendaItemEigenLesdoelen').val('Test lesdoelen'); $('#AgendaItemAgendaItemHerhaalModeID').val(''); $('#AgendaItemHerhaalStartDatum').val(''); $('#AgendaItemHerhaalEindDatum').val(''); $('#AgendaItemAgendaItemKleuterModeID').val('0'); UpdateVisibleFields('AgendaItem');$('.HoekVeldInput').val('');$('#AgendaItemAgendaItemBelangstellingsCentrumID').val(''); $('#AgendaItemLesFicheID').val('791'); $('#AgendaItemIsBestaandeFicheAanpassen').attr('disabled', false); loadFieldsets(791, 'LesficheID'); return false; " href="#">Preset 1</a>
実際にそのコードを完全に読む必要はありません。それは...まあ、あまり良くありません。ほとんどの場合、値を設定するだけですが、プリセット設定によっては、いくつかの機能を実行する必要がある場合もあります。今、私はこれにアプローチするためのより良い方法を考えていましたが、私は立ち往生しています。これらのアクションをJSONと一緒に送信する方法はありますか?のようなことをすることは可能ですか
var returndatafromajax = [
{
"html" : "<a href='#' rel="0">preset</a>",
"actions" : "dothis(); dothat();"
},
{
"html" : "<a href='#' rel="1">preset 2</a>",
"actions" : "someofthis();"
},
{
"html" : "<a href='#' rel="2">preset 3</a>",
"actions" : "noneofthat();"
}
]
$('ul').on('click', 'a', function() {
var index = $(this).attr('rel');
somehowexecute(returndatafromajax[index].actions);
});