allow getValue method to return value itself, not object, fix

This commit is contained in:
vitalets 2013-06-15 20:06:42 +04:00
parent 8287173d26
commit 90868b5bc1
3 changed files with 31 additions and 9 deletions

@ -3,6 +3,7 @@ X-editable changelog
Version 1.4.5 wip 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] add `destroy` method to inputs (vitalets)
[enh #164] allow emptytext to be html (vitalets) [enh #164] allow emptytext to be html (vitalets)
[enh #78] allow html in editable content (vitalets) [enh #78] allow html in editable content (vitalets)

@ -507,25 +507,34 @@ Makes editable any HTML element on the page. Applied as jQuery method.
/** /**
Returns current values of editable elements. 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. 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() @method getValue()
@param {bool} isSingle whether to return just value of single element
@returns {Object} object of element names and values @returns {Object} object of element names and values
@example @example
$('#username, #fullname').editable('getValue'); $('#username, #fullname').editable('getValue');
// possible result: //result:
{ {
username: "superuser", username: "superuser",
fullname: "John" fullname: "John"
} }
//isSingle = true
$('#username').editable('getValue', true);
//result "superuser"
**/ **/
case 'getValue': case 'getValue':
this.each(function () { if(arguments.length === 2 && arguments[1] === true) { //isSingle = true
var $this = $(this), data = $this.data(datakey); result = this.eq(0).data(datakey).value;
if (data && data.value !== undefined && data.value !== null) { } else {
result[data.options.name] = data.input.value2submit(data.value); 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; return result;
/** /**

@ -66,7 +66,19 @@ $(function () {
equal(values.comment, '', 'textarea empty value') ; equal(values.comment, '', 'textarea empty value') ;
ok(!('sex' in values), 'select value not present') ; ok(!('sex' in values), 'select value not present') ;
ok(!('dob' in values), 'date 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 () { test("'init' event", function () {
expect(1); expect(1);