我有一个包含大量输入(文本输入、文本区域、复选框...)的表单,用户可以使用自己的预设填充这些输入。目前,用户可以搜索他们的预设,调用 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);
});