342e188223ed7869383cf696984501d38a0ff0d1 max Fri Oct 21 02:04:47 2022 -0700 adding a more generic way to add javascript events to DOM elements, no redmine diff --git src/lib/cheapcgi.c src/lib/cheapcgi.c index 0d9acab..e4f43f4 100644 --- src/lib/cheapcgi.c +++ src/lib/cheapcgi.c @@ -193,30 +193,38 @@ } void jsAddEventForId(char *eventName, char *idText, char *jsText) { checkValidEvent(eventName); jsInlineF("document.getElementById('%s').addEventListener('%s', %s);\n", idText, eventName, jsText); } void jsOnEventById(char *eventName, char *idText, char *jsText) /* Add js mapping for inline event */ { checkValidEvent(eventName); jsInlineF("document.getElementById('%s').on%s = function(event) {if (!event) {event=window.event}; %s};\n", idText, eventName, jsText); } +void jsOnEventBySelector(char *eventName, char *query, char *jsText) +/* Add js mapping for inline event given a query selector, e.g. '.className' */ +{ +checkValidEvent(eventName); +jsInlineF("document.querySelector('%s').addEventListener( '%s', function(event) { %s };\n", eventName, query, jsText); +} + + void jsOnEventByIdF(char *eventName, char *idText, char *format, ...) /* Add js mapping for inline event with printf formatting */ { checkValidEvent(eventName); jsInlineF("document.getElementById('%s').on%s = function(event) {if (!event) {event=window.event}; ", idText, eventName); va_list args; va_start(args, format); dyStringVaPrintf(jsInlineLines, format, args); va_end(args); jsInlineF("};\n"); } //============ END of javascript inline-separation routines ===============