11

I need to make a div layer so that when you click on it you will have your cursor there blinking and you can insert/delete text just like <input type="text"> does, except that I do not want to use it as it is slightly too limited to my case.

I can definitely use JavaScript.

SilentGhost
  • 307,395
  • 66
  • 306
  • 293
Tower
  • 98,741
  • 129
  • 357
  • 507

6 Answers6

15

DIV element has (other elements as well) contentEditable property that you can set in Javascript to true.

getElementById('YourDiv').contentEditable = true;
Robert Koritnik
  • 103,639
  • 52
  • 277
  • 404
5

You can make the div editable by setting its contentEditable attribute / property to true. However, for anything that is slightly more powerful or flexible then very basic editing, you might want to look at existing solutions such as:

Daan
  • 6,952
  • 4
  • 29
  • 36
2

Jquery can be used like this:

$.('#yourDiv').click(function() {
    $(this).attr('contenteditable', 'true');
});
nonshatter
  • 3,347
  • 6
  • 23
  • 27
1

I suggest you to use a textarea, and if that's not enough, use a WYSIWYG editor like tinyMCE or FCKeditor.

Fabien Ménager
  • 140,109
  • 3
  • 41
  • 60
0

contenteditable attribute could be used for this purpose. Following code line has been tested in IE7 and Firefox 3.0.10. One part, I have noticed that this attribute should be used in lower case only; else it wont work in Firefox.

<div id="Div_ID" contenteditable="true" tabindex="0">
   Enter text here
</div>
jamesh
  • 19,863
  • 14
  • 56
  • 96
Sourabh
  • 1,515
  • 1
  • 14
  • 21
0

as I understand your problem, you can resove it by adding textarea into your div. It is very simply to make this textarea autosize to occupy whole div area and looks like this div.

As for contentEditable, I have seen some browsers, supported this feature for div-element and does not. Anyway, you can use iframe in your div. It's document-element can have contentEditable.

Sergei Kovalenko
  • 1,402
  • 12
  • 17