diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 62f3d74..7c17193 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -4,6 +4,8 @@ X-editable changelog Version 1.1.1 wip ---------------------------- +[enh] object can be passed in 'option' method to set several options simultaneously (vitalets) +[enh #20] toggle editable by 'dblclick' and 'mouseenter' (vitalets) [enh] added 'inputs-ext' directory with sample input 'address'. They will not be concatenated to main files (vitalets) [enh #13] 'onblur' option: to cancel, submit or ignore when user clicks outside the form (vitalets) [enh] 'ajaxOptions' parameter for advanced ajax configuration (vitalets) diff --git a/src/element/editable-element.js b/src/element/editable-element.js index 8b07eb8..4d91d58 100644 --- a/src/element/editable-element.js +++ b/src/element/editable-element.js @@ -136,10 +136,24 @@ Makes editable any HTML element on the page. Applied as jQuery method. Sets new option @method option(key, value) - @param {string} key - @param {mixed} value + @param {string|object} key option name or object with several options + @param {mixed} value option new value + @example + $('.editable').editable('option', 'pk', 2); **/ option: function(key, value) { + //set option(s) by object + if(key && typeof key === 'object') { + $.each(key, $.proxy(function(k, v){ + this.option($.trim(k), v); + }, this)); + return; + } + + //set option by string + this.options[key] = value; + + //disabled if(key === 'disabled') { if(value) { this.disable(); @@ -148,12 +162,15 @@ Makes editable any HTML element on the page. Applied as jQuery method. } return; } - - this.options[key] = value; + + //value + if(key === 'value') { + this.setValue(value); + } //transfer new option to container! if(this.container) { - this.container.option(key, value); + this.container.option(key, value); } }, @@ -177,7 +194,9 @@ Makes editable any HTML element on the page. Applied as jQuery method. } } }, - + /* + show / hide editable container when element triggers event defined by toggle option + */ activate: function (e) { e.preventDefault(); if(this.options.disabled) { diff --git a/test/unit/api.js b/test/unit/api.js index 313e682..47f6ca2 100644 --- a/test/unit/api.js +++ b/test/unit/api.js @@ -287,7 +287,7 @@ $(function () { }); - test("option method", function () { + test("option method (string and object)", function () { var e = $('<a href="#" data-url="post.php" data-name="text">abc</a>').appendTo('#qunit-fixture').editable(), e1 = $('<a href="#" data-pk="1" data-name="text1">abc</a>').appendTo('#qunit-fixture').editable(), url = 'abc'; @@ -296,6 +296,12 @@ $(function () { equal(e.data('editable').options.pk, 2, 'pk set correctly'); equal(e1.data('editable').options.pk, 2, 'pk2 set correctly'); + + $('#qunit-fixture a').editable('option', {pk: 3, value: 'abcd'}); + + equal(e.data('editable').options.pk, 3, 'pk set correctly (by object)'); + equal(e.data('editable').value, 'abcd', 'value set correctly (by object)'); + equal(e.text(), 'abcd', 'text set correctly (by object)'); }); asyncTest("'submit' method: client and server validation", function () {