diff --git a/CHANGELOG.txt b/CHANGELOG.txt index ae17551..a3e67ea 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -4,6 +4,7 @@ X-editable changelog Version 1.3.1 wip ---------------------------- +[enh] convert newlines to <br> in error message for more pretty display (vitalets) [enh #57] remove css height for textarea (vitalets) [enh] if new value for select is 'null' source should not load (vitalets) [enh #53] 'name' no more appended to source defined as url (vitalets) diff --git a/src/editable-form/editable-form.js b/src/editable-form/editable-form.js index 4f448d6..d7c6d02 100644 --- a/src/editable-form/editable-form.js +++ b/src/editable-form/editable-form.js @@ -154,14 +154,23 @@ Editableform is linked with one of input types, e.g. 'text', 'select' etc. error: function(msg) { var $group = this.$form.find('.control-group'), - $block = this.$form.find('.editable-error-block'); + $block = this.$form.find('.editable-error-block'), + lines; if(msg === false) { $group.removeClass($.fn.editableform.errorGroupClass); $block.removeClass($.fn.editableform.errorBlockClass).empty().hide(); } else { + //convert newline to <br> for more pretty error display + if(msg) { + lines = msg.split("\n"); + for (var i = 0; i < lines.length; i++) { + lines[i] = $('<div>').text(lines[i]).html(); + } + msg = lines.join('<br>'); + } $group.addClass($.fn.editableform.errorGroupClass); - $block.addClass($.fn.editableform.errorBlockClass).text(msg).show(); + $block.addClass($.fn.editableform.errorBlockClass).html(msg).show(); } }, diff --git a/test/unit/text.js b/test/unit/text.js index 17d692c..801ef04 100644 --- a/test/unit/text.js +++ b/test/unit/text.js @@ -86,7 +86,7 @@ $(function () { }); asyncTest("should show error on server validation", function () { - var msg = 'required', + var msg = "required\nfield", e = $('<a href="#" data-name="text1">abc</a>').appendTo(fx).editable({ validate: function(value) { ok(this === e[0], 'scope is ok'); @@ -104,7 +104,8 @@ $(function () { setTimeout(function() { ok(p.is(':visible'), 'popover still shown'); ok(p.find('.editable-error-block').length, 'class "editable-error-block" exists'); - equal(p.find('.editable-error-block').text(), 'required', 'error msg shown'); + equal(p.find('.editable-error-block').text(), msg.replace('\n', ''), 'error msg shown'); + equal(p.find('.editable-error-block').html(), msg.replace('\n', '<br>'), 'newline replaced with br'); p.find('button[type=button]').click(); ok(!p.is(':visible'), 'popover was removed'); e.remove();