aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVojta Jina2011-11-24 19:28:09 -0800
committerIgor Minar2011-12-06 13:07:26 -0800
commitc9f2b1eec5e8a9eaf10faae8a8accf0b771096e0 (patch)
treec1393db839d77ea3816956e7c8a2030079fb5e7a
parent163e05ed36deecb341092296186ef6c5cd00f426 (diff)
downloadangular.js-c9f2b1eec5e8a9eaf10faae8a8accf0b771096e0.tar.bz2
feat(form): do not prevent submission if action attribute present
-rw-r--r--src/directives.js3
-rw-r--r--src/widget/form.js4
-rw-r--r--test/widget/formSpec.js16
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);