diff options
| author | Vojta Jina | 2011-11-24 19:28:09 -0800 |
|---|---|---|
| committer | Igor Minar | 2011-12-06 13:07:26 -0800 |
| commit | c9f2b1eec5e8a9eaf10faae8a8accf0b771096e0 (patch) | |
| tree | c1393db839d77ea3816956e7c8a2030079fb5e7a | |
| parent | 163e05ed36deecb341092296186ef6c5cd00f426 (diff) | |
| download | angular.js-c9f2b1eec5e8a9eaf10faae8a8accf0b771096e0.tar.bz2 | |
feat(form): do not prevent submission if action attribute present
| -rw-r--r-- | src/directives.js | 3 | ||||
| -rw-r--r-- | src/widget/form.js | 4 | ||||
| -rw-r--r-- | test/widget/formSpec.js | 16 |
3 files changed, 19 insertions, 4 deletions
diff --git a/src/directives.js b/src/directives.js index ea09fc06..54469ea7 100644 --- a/src/directives.js +++ b/src/directives.js @@ -524,9 +524,8 @@ angularDirective("ng:click", function(expression, element){ angularDirective("ng:submit", function(expression, element) { return function(element) { var self = this; - element.bind('submit', function(event) { + element.bind('submit', function() { self.$apply(expression); - event.preventDefault(); }); }; }); diff --git a/src/widget/form.js b/src/widget/form.js index 51864cf0..76051832 100644 --- a/src/widget/form.js +++ b/src/widget/form.js @@ -61,8 +61,8 @@ angularWidget('form', function(form){ parentForm = $formFactory.forElement(formElement), form = $formFactory(parentForm); formElement.data('$form', form); - formElement.bind('submit', function(event){ - event.preventDefault(); + formElement.bind('submit', function(event) { + if (!formElement.attr('action')) event.preventDefault(); }); if (name) { this[name] = form; diff --git a/test/widget/formSpec.js b/test/widget/formSpec.js index 7a92dbf4..f2e90d9e 100644 --- a/test/widget/formSpec.js +++ b/test/widget/formSpec.js @@ -29,6 +29,22 @@ describe('form', function() { })); + it('should not prevent form submission if action attribute present', + inject(function($compile, $rootScope) { + var callback = jasmine.createSpy('submit').andCallFake(function(event) { + expect(event.isDefaultPrevented()).toBe(false); + event.preventDefault(); + }); + + doc = angular.element('<form name="x" action="some.py" />'); + $compile(doc)($rootScope); + doc.bind('submit', callback); + + browserTrigger(doc, 'submit'); + expect(callback).toHaveBeenCalledOnce(); + })); + + it('should publish form to scope', inject(function($rootScope, $compile) { doc = angular.element('<form name="myForm"></form>'); $compile(doc)($rootScope); |
