diff --git a/src/inputs/text.js b/src/inputs/text.js index 94eb8d3..87eae51 100644 --- a/src/inputs/text.js +++ b/src/inputs/text.js @@ -28,9 +28,8 @@ $(function(){ if (this.options.clear) { this.$clear = $('<span class="editable-clear-x"></span>'); - this.$tpl = $('<div style="position: relative">') - .append(this.$input) - .append(this.$clear); + this.$tpl = $('<div style="position: relative">').append(this.$input).append(this.$clear); + this.$input.css('padding-right', '25px'); } if(this.options.inputclass) { @@ -43,7 +42,8 @@ $(function(){ }, postrender: function() { - if (this.options.clear) { + //attach `clear` button in postrender, because it requires parent height to be calculated (in DOM) + if (this.$clear) { var h = this.$input.parent().height() || 20; this.$clear.css('top', (h - this.$clear.outerHeight()) / 2); this.$input.keyup($.proxy(this.toggleClear, this)); @@ -58,15 +58,17 @@ $(function(){ if(this.$input.is(':visible')) { this.$input.focus(); $.fn.editableutils.setCursorPosition(this.$input.get(0), this.$input.val().length); - if(this.options.clear) { - this.toggleClear(); - } + if(this.toggleClear) { + this.toggleClear(); + } } }, //show / hide clear button toggleClear: function() { - if(!this.options.clear) return; + if(!this.$clear) { + return; + } if(this.$input.val()) { this.$clear.show(); @@ -92,7 +94,7 @@ $(function(){ placeholder: null, /** - Whether to show clear button / link or not + Whether to show `clear` button / link or not **/ clear: true }); diff --git a/src/inputs/textarea.js b/src/inputs/textarea.js index 9b86f50..a94d07b 100644 --- a/src/inputs/textarea.js +++ b/src/inputs/textarea.js @@ -27,6 +27,14 @@ $(function(){ render: function () { Textarea.superclass.render.call(this); + if(this.options.inputclass) { + this.$input.addClass(this.options.inputclass); + } + + if(this.options.placeholder) { + this.$input.attr('placeholder', this.options.placeholder); + } + //ctrl + enter this.$input.keydown(function (e) { if (e.ctrlKey && e.which === 13) { diff --git a/test/unit/text.js b/test/unit/text.js index d151912..fe4e5fa 100644 --- a/test/unit/text.js +++ b/test/unit/text.js @@ -501,6 +501,32 @@ $(function () { equal(e.text(), v1, 'new text shown'); } - }); + }); + + test("`clear` option", function () { + var e = $('<a href="#" data-type="text" data-name="text1">abc</a>').appendTo('#qunit-fixture').editable({ + clear: true, + send: 'never' + }); + + e.click() + var p = tip(e); + var c = p.find('.editable-clear-x'); + ok(c.is(':visible'), 'clear shown'); + p.find('input').val('').trigger('keyup'); + ok(!c.is(':visible'), 'clear hidden for empty input'); + p.find('input').val('cde').trigger('keyup'); + ok(c.is(':visible'), 'clear shown on keyboard input'); + c.click(); + ok(!c.is(':visible'), 'clear hidden after click'); + ok(!p.find('input').val(), 'input empty'); + + p.find('form').submit(); + + //reopen with empty + e.click(); + ok(!c.is(':visible'), 'clear hidden for empty input'); + }); + }); \ No newline at end of file