diff --git a/CHANGELOG.txt b/CHANGELOG.txt index f3ce670..8f0e884 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -3,6 +3,7 @@ X-editable changelog Version 1.4.6 wip ---------------------------- +[enh] add `defaultValue` option (vitalets) [enh #313] add composer support (masim) [enh #300] Fix 'bootstrap popover falls off page if editable is too close to window edge' (belerweb) [enh #302] allow data-datepicker and data-datetimepicker (vitalets) diff --git a/src/editable-form/editable-form.js b/src/editable-form/editable-form.js index d814920..5ecb625 100644 --- a/src/editable-form/editable-form.js +++ b/src/editable-form/editable-form.js @@ -102,7 +102,8 @@ Editableform is linked with one of input types, e.g. 'text', 'select' etc. this.error(false); this.input.$input.removeAttr('disabled'); this.$form.find('.editable-submit').removeAttr('disabled'); - this.input.value2input(this.value); + var value = (this.value === null || this.value === undefined || this.value === '') ? this.options.defaultValue : this.value; + this.input.value2input(value); //attach submit handler this.$form.submit($.proxy(this.submit, this)); } @@ -477,6 +478,14 @@ Editableform is linked with one of input types, e.g. 'text', 'select' etc. **/ value: null, /** + Value that will be displayed in input if original field value is `null`. + + @property defaultValue + @type string|object + @default null + **/ + defaultValue: null, + /** Strategy for sending data on server. Can be `auto|always|never`. When 'auto' data will be sent on server **only if pk and url defined**, otherwise new value will be stored locally. diff --git a/test/unit/select.js b/test/unit/select.js index f6c7561..bcf4f41 100644 --- a/test/unit/select.js +++ b/test/unit/select.js @@ -778,6 +778,18 @@ $(function () { e.remove(); start(); }, timeout); - }); + }); + + test("defaultValue", function () { + var e = $('<a href="#" data-type="select"></a>').appendTo('#qunit-fixture').editable({ + source: groups, + defaultValue: 3 + }); + + e.click(); + var p = tip(e); + ok(p.find('select').length, 'select exists') + equal(p.find('select').val(), 3, 'selected value correct'); + }); }); diff --git a/test/unit/text.js b/test/unit/text.js index 523f015..3710240 100644 --- a/test/unit/text.js +++ b/test/unit/text.js @@ -547,6 +547,37 @@ $(function () { e.click(); ok(!c.is(':visible'), 'clear hidden for empty input'); }); + + test("defaultValue", function () { + var e = $('<a href="#" data-name="text1"></a>').appendTo('#qunit-fixture').editable({ + defaultValue: '123' + }), + e1 = $('<a href="#" data-name="text1"></a>').appendTo('#qunit-fixture').editable({ + value: null, + defaultValue: '123' + }); + e2 = $('<a href="#" data-name="text1">qwe</a>').appendTo('#qunit-fixture').editable({ + defaultValue: '123' + }); + + //empty text + e.click() + var p = tip(e); + ok(p.find('input').length, 'input exists'); + equal(p.find('input').val(), '123', 'default text ok'); + + //empty value from js + e1.click() + p = tip(e1); + ok(p.find('input').length, 'input exists'); + equal(p.find('input').val(), '123', 'default text ok'); + + //not empty + e2.click() + p = tip(e2); + ok(p.find('input').length, 'input exists'); + equal(p.find('input').val(), 'qwe', 'default text not set as element not empty'); + }); }); \ No newline at end of file