[Jifty-commit] r1755 - in jifty/trunk: share/web/static/js
jifty-commit at lists.jifty.org
jifty-commit at lists.jifty.org
Fri Aug 4 13:44:12 EDT 2006
Author: trs
Date: Fri Aug 4 13:44:11 2006
New Revision: 1755
Modified:
jifty/trunk/ (props changed)
jifty/trunk/share/web/static/js/jifty.js
Log:
r15081 at zot: tom | 2006-08-04 13:43:59 -0400
Use our own "enter" handler to select the button to click, since Safari sometimes gets it wrong with complex fields
Modified: jifty/trunk/share/web/static/js/jifty.js
==============================================================================
--- jifty/trunk/share/web/static/js/jifty.js (original)
+++ jifty/trunk/share/web/static/js/jifty.js Fri Aug 4 13:44:11 2006
@@ -375,10 +375,42 @@
extras.push(e);
}
return extras;
+ },
+
+ /* Someday Jifty may have the concept of "default"
+ buttons. For now, this clicks the first button that will
+ submit the action associated with the form element.
+ */
+ clickDefaultButton: function(element) {
+ var action = Form.Element.getAction( element );
+ if ( action ) {
+ var buttons = action.buttons();
+ for ( var i = 0; i < buttons.length; i++ ) {
+ var b = buttons[i];
+ if ( Form.Element.buttonActions( b ).indexOf( action.moniker ) >= 0 ) {
+ window.console.log( "clicking!" );
+ b.click();
+ return true;
+ }
+ }
+ }
+ return false;
+ },
+
+ handleEnter: function(event) {
+ /* Trap "Enter" */
+ if ( event.keyCode == 13
+ && !event.metaKey && !event.altKey && !event.ctrlKey )
+ {
+ if ( Form.Element.clickDefaultButton( event.target ) )
+ event.preventDefault();
+ }
}
});
+JSAN.use("DOM.Events");
+
// Form elements should AJAX validate if the CSS says so
Behaviour.register({
'input.ajaxvalidation, textarea.ajaxvalidation, input.ajaxcanonicalization, textarea.ajaxcanonicalization': function(elt) {
@@ -398,6 +430,19 @@
buttonToLink(e);
Element.addClassName( e, 'is_button_as_link' );
}
+ },
+ "input.date, input.text": function(e) {
+ /* XXX TODO: Figure out how to make our enter handler detect
+ when the autocomplete is active so we can use it on autocompleted
+ fields
+ */
+ if ( !Element.hasClassName( e, "jifty_enter_handler_attached" )
+ && !Element.hasClassName( e, "ajaxautocompletes" ) )
+ {
+ /* Do not use keydown as the event, it will not work as expected in Safari */
+ DOM.Events.addListener( e, "keypress", Form.Element.handleEnter );
+ Element.addClassName( e, "jifty_enter_handler_attached" );
+ }
}
});
More information about the Jifty-commit
mailing list