Skip to content
Browse files

MDL-32064 quiz navigation: JS form submit must fire submit event hand…

…lers.
  • Loading branch information...
1 parent 3c4111e commit 73848c608d22dde2893620497a67a379e46f06bd @timhunt timhunt committed Mar 15, 2012
Showing with 25 additions and 4 deletions.
  1. +25 −4 mod/quiz/module.js
View
29 mod/quiz/module.js
@@ -143,6 +143,29 @@ M.mod_quiz.nav.init = function(Y) {
var form = Y.one('#responseform');
if (form) {
+ function find_enabled_submit() {
+ // This is rather inelegant, but the CSS3 selector
+ // return form.one('input[type=submit]:enabled');
+ // does not work in IE7, 8 or 9 for me.
+ var enabledsubmit = null;
+ form.all('input[type=submit]').each(function(submit) {
+ if (!enabledsubmit && !submit.get('disabled')) {
+ enabledsubmit = submit;
+ }
+ });
+ return enabledsubmit;
+ }
+
+ function nav_to_page(pageno) {
+ Y.one('#followingpage').set('value', pageno);
+
+ // Automatically submit the form. We do it this strange way because just
+ // calling form.submit() does not run the form's submit event handlers.
+ var submit = find_enabled_submit();
+ submit.set('name', '');
+ submit.getDOMNode().click();
+ };
+
Y.delegate('click', function(e) {
if (this.hasClass('thispage')) {
return;
@@ -157,22 +180,20 @@ M.mod_quiz.nav.init = function(Y) {
} else {
pageno = 0;
}
- Y.one('#followingpage').set('value', pageno);
var questionidmatch = this.get('href').match(/#q(\d+)/);
if (questionidmatch) {
form.set('action', form.get('action') + '#q' + questionidmatch[1]);
}
- form.submit();
+ nav_to_page(pageno);
}, document.body, '.qnbutton');
}
if (Y.one('a.endtestlink')) {
Y.on('click', function(e) {
e.preventDefault();
- Y.one('#followingpage').set('value', -1);
- Y.one('#responseform').submit();
+ nav_to_page(-1);
}, 'a.endtestlink');
}

0 comments on commit 73848c6

Please sign in to comment.
Something went wrong with that request. Please try again.