diff --git a/src/components/checkbox/checkbox.js b/src/components/checkbox/checkbox.js
index a1ba4b7bc24..a23618606bf 100644
--- a/src/components/checkbox/checkbox.js
+++ b/src/components/checkbox/checkbox.js
@@ -168,10 +168,19 @@ function MdCheckboxDirective(inputDirective, $mdAria, $mdConstant, $mdTheming, $
function keypressHandler(ev) {
var keyCode = ev.which || ev.keyCode;
- if (keyCode === $mdConstant.KEY_CODE.SPACE || keyCode === $mdConstant.KEY_CODE.ENTER) {
- ev.preventDefault();
- element.addClass('md-focused');
- listener(ev);
+ ev.preventDefault();
+ switch(keyCode) {
+ case $mdConstant.KEY_CODE.SPACE:
+ element.addClass('md-focused');
+ listener(ev);
+ break;
+ case $mdConstant.KEY_CODE.ENTER:
+ var form = $mdUtil.getClosest(ev.target, 'form');
+ //We have to use a native event here as the form directive does not use jqlite
+ if(form) {
+ form.dispatchEvent(new Event('submit'));
+ }
+ break;
}
}
diff --git a/src/components/checkbox/checkbox.spec.js b/src/components/checkbox/checkbox.spec.js
index b95af96e8ca..5c64659905b 100644
--- a/src/components/checkbox/checkbox.spec.js
+++ b/src/components/checkbox/checkbox.spec.js
@@ -280,6 +280,39 @@ describe('mdCheckbox', function() {
expect(isChecked(checkbox)).toBe(true);
});
+ it('should set the checkbox to checked when focused and SPACE keypress event fired', function () {
+ var checkbox = compileAndLink('