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); | 
