From 712b55e1ba8ec0425428d95989cf188a51a9d446 Mon Sep 17 00:00:00 2001 From: Sam Hemelryk Date: Wed, 5 Jan 2011 14:02:42 +0800 Subject: [PATCH] javascript MDL-24521 Fixed confirm dialog bug. Kudos to John Anderson for his work on the patch and James Brisland for help testing. --- lib/javascript-static.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/javascript-static.js b/lib/javascript-static.js index d79230d16eb..93643bae47d 100644 --- a/lib/javascript-static.js +++ b/lib/javascript-static.js @@ -262,15 +262,17 @@ M.util.show_confirm_dialog = function(e, args) { return; } - if (target.get('tagName').toLowerCase() == 'a') { + var targetancestor = null, + targetform = null; + + if (target.test('a')) { window.location = target.get('href'); - } else if (target.get('tagName').toLowerCase() == 'input') { - var parentelement = target.get('parentNode'); - while (parentelement.get('tagName').toLowerCase() != 'form' && parentelement.get('tagName').toLowerCase() != 'body') { - parentelement = parentelement.get('parentNode'); - } - if (parentelement.get('tagName').toLowerCase() == 'form') { - parentelement.submit(); + } else if ((targetancestor = target.ancestor('a')) !== null) { + window.location = targetancestor.get('href'); + } else if (target.test('input')) { + targetform = target.ancestor('form'); + if (targetform && targetform.submit) { + targetform.submit(); } } else if (M.cfg.developerdebug) { alert("Element of type " + target.get('tagName') + " is not supported by the M.util.show_confirm_dialog function. Use A or INPUT");