diff --git a/CHANGELOG.txt b/CHANGELOG.txt index cedf7ae..0d5b758 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -3,6 +3,7 @@ X-editable changelog Version 1.4.5 wip ---------------------------- +[enh #259] allow `getValue` method to return value itself, not object (vitalets) [enh] add `destroy` method to inputs (vitalets) [enh #164] allow emptytext to be html (vitalets) [enh #78] allow html in editable content (vitalets) diff --git a/src/element/editable-element.js b/src/element/editable-element.js index ae30004..8cb8bf0 100644 --- a/src/element/editable-element.js +++ b/src/element/editable-element.js @@ -507,25 +507,34 @@ Makes editable any HTML element on the page. Applied as jQuery method. /** Returns current values of editable elements. Note that it returns an **object** with name-value pairs, not a value itself. It allows to get data from several elements. - If value of some editable is `null` or `undefined` it is excluded from result object. + If value of some editable is `null` or `undefined` it is excluded from result object. + When param `isSingle` is set to **true** - it is supposed you have single element and will return value of editable instead of object. @method getValue() + @param {bool} isSingle whether to return just value of single element @returns {Object} object of element names and values @example $('#username, #fullname').editable('getValue'); - // possible result: + //result: { username: "superuser", fullname: "John" } + //isSingle = true + $('#username').editable('getValue', true); + //result "superuser" **/ case 'getValue': - this.each(function () { - var $this = $(this), data = $this.data(datakey); - if (data && data.value !== undefined && data.value !== null) { - result[data.options.name] = data.input.value2submit(data.value); - } - }); + if(arguments.length === 2 && arguments[1] === true) { //isSingle = true + result = this.eq(0).data(datakey).value; + } else { + this.each(function () { + var $this = $(this), data = $this.data(datakey); + if (data && data.value !== undefined && data.value !== null) { + result[data.options.name] = data.input.value2submit(data.value); + } + }); + } return result; /** diff --git a/test/unit/api.js b/test/unit/api.js index aff15c8..1747067 100644 --- a/test/unit/api.js +++ b/test/unit/api.js @@ -66,7 +66,19 @@ $(function () { equal(values.comment, '', 'textarea empty value') ; ok(!('sex' in values), 'select value not present') ; ok(!('dob' in values), 'date value not present') ; - }); + }); + + test("getValue with isSingle = true", function () { + var v = '123', + e = $( + '<a href="#" data-type="text" id="username">'+v+'</a>' + + '<a href="#" data-type="textarea" id="comment">456</a>' + ).appendTo('#qunit-fixture').editable(); + + //check get value + var value = e.editable('getValue', true); + equal(value, v, 'value ok'); + }); test("'init' event", function () { expect(1);