diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index cfce619..27330f6 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -3,8 +3,9 @@ X-editable changelog
Version 1.4.5 wip
----------------------------
+[enh] if `display` defined as function call it on init (vitalets)
[enh #218] sourceCache now disables cache totally (vitalets)
-[bug #156] conflict of bootstrap datepicker and jQuery UI datepicker (vitalets)
+[bug #156] solve conflict of bootstrap datepicker and jQuery UI datepicker (vitalets)
[enh] update bootstrap-datepicker to 1.1.2 (vitalets)
[enh] allow follow links in disabled state (vitalets)
[enh] update combodate to 1.0.4, fix #222 (vitalets)
diff --git a/src/element/editable-element.js b/src/element/editable-element.js
index 9c9f181..077cef1 100644
--- a/src/element/editable-element.js
+++ b/src/element/editable-element.js
@@ -81,6 +81,12 @@ Makes editable any HTML element on the page. Applied as jQuery method.
this.$element.attr('tabindex', -1); //do not stop focus on element when toggled manually
}
+ //if display is function it's far more convinient to have autotext = always to render correctly on init
+ //see https://github.com/vitalets/x-editable-yii/issues/34
+ if(typeof this.options.display === 'function') {
+ this.options.autotext = 'always'
+ }
+
//check conditions for autotext:
switch(this.options.autotext) {
case 'always':
diff --git a/test/unit/select.js b/test/unit/select.js
index 1a8f9ae..f6c7561 100644
--- a/test/unit/select.js
+++ b/test/unit/select.js
@@ -615,7 +615,7 @@ $(function () {
asyncTest("'display' callback", function () {
var req = 0,
- e = $('').appendTo(fx).editable({
+ e = $('123').appendTo(fx).editable({
pk: 1,
source: groups,
ajaxOptions: {
diff --git a/test/unit/text.js b/test/unit/text.js
index 66da9a0..490faaf 100644
--- a/test/unit/text.js
+++ b/test/unit/text.js
@@ -374,17 +374,27 @@ $(function () {
asyncTest("'display' callback", function () {
var newText = 'cd;"',
- e = $('abc').appendTo(fx).editable({
+ counter = 0,
+ initialVal = 'abc',
+ e = $('123').appendTo(fx).editable({
ajaxOptions: {
dataType: 'json'
},
display: function(value, response) {
- ok(this === e[0], 'scope is ok');
- ok(response.success, 'response param ok');
- $(this).text('qq'+value);
- }
- });
+ if(counter === 0) {
+ ok(response === undefined, 'initial autotext ok as display is func');
+ $(this).text(initialVal);
+ } else {
+ ok(this === e[0], 'updating, scope is ok');
+ ok(response.success, 'response param ok');
+ $(this).text('qq'+value);
+ }
+ counter++;
+ }
+ });
+ equal(e.text(), initialVal, 'initial autotext ok');
+
e.click()
var p = tip(e);