From: Max Kanat-Alexander Date: Mon, 19 Jul 2010 23:18:07 +0000 (-0700) Subject: Bug 576912: Make the automatic duplicate detection table appear onkeyup X-Git-Tag: bugzilla-3.7.3~41 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f0e140004b8c76751264969306ce30c928c5609e;p=thirdparty%2Fbugzilla.git Bug 576912: Make the automatic duplicate detection table appear onkeyup instead of onblur, but give it a delay so that (a) we're not sending too many queries and (b) so that it doesn't appear at the exact same time as you click Submit Bug (making the "Submit Bug" click not work) r=timello, a=mkanat --- diff --git a/js/bug.js b/js/bug.js index 8cee68efcf..baea5125f1 100644 --- a/js/bug.js +++ b/js/bug.js @@ -54,6 +54,22 @@ YAHOO.bugzilla.dupTable = { 'bz_default_hidden'); dataTable.getDataSource().sendRequest(post_data, callback); }, + // This is the keyup event handler. It calls updateTable with a relatively + // long delay, to allow additional input. However, the delay is short + // enough that nobody could get from the summary field to the Submit + // Bug button before the table is shown (which is important, because + // the showing of the table causes the Submit Bug button to move, and + // if the table shows at the exact same time as the button is clicked, + // the click on the button won't register.) + doUpdateTable: function(e, args) { + var dt = args[0]; + var product_name = args[1]; + var summary = YAHOO.util.Event.getTarget(e); + clearTimeout(YAHOO.bugzilla.dupTable.lastTimeout); + YAHOO.bugzilla.dupTable.lastTimeout = setTimeout(function() { + YAHOO.bugzilla.dupTable.updateTable(dt, product_name, summary) }, + 600); + }, formatBugLink: function(el, oRecord, oColumn, oData) { el.innerHTML = '' + oData + ''; @@ -107,11 +123,7 @@ YAHOO.bugzilla.dupTable = { data.options.initialLoad = false; var dt = new YAHOO.widget.DataTable(data.container, data.columns, this.dataSource, data.options); - YAHOO.util.Event.on(data.summary_field, 'blur', - function(e) { - YAHOO.bugzilla.dupTable.updateTable(dt, data.product_name, - YAHOO.util.Event.getTarget(e)) - } - ); + YAHOO.util.Event.on(data.summary_field, 'keyup', this.doUpdateTable, + [dt, data.product_name]); }, };