2013-07-09 37 views
0

我需要使用有序列表文本實現文本區域。我已經完成但行號必須是遞增只有在回車鍵被按下。textarea內部的排序列表(行號)

這裏是我的努力:Js Fiddle

代碼

var lineObjOffsetTop = 2; 
createTextAreaWithLines('codeTextarea'); 
function createTextAreaWithLines(id) 
{ 
var el = document.createElement('DIV'); 
var ta = document.getElementById(id); 
ta.parentNode.insertBefore(el,ta); 
el.appendChild(ta); 

el.className='textAreaWithLines'; 
el.style.width = (ta.offsetWidth + 30) + 'px'; 
ta.style.position = 'absolute'; 
ta.style.left = '30px'; 
el.style.height = (ta.offsetHeight + 2) + 'px'; 
el.style.overflow='hidden'; 
el.style.position = 'relative'; 
el.style.width = (ta.offsetWidth + 30) + 'px'; 
var lineObj = document.createElement('DIV'); 
lineObj.style.position = 'absolute'; 
lineObj.style.top = lineObjOffsetTop + 'px'; 
lineObj.style.left = '0px'; 
lineObj.style.width = '27px'; 
el.insertBefore(lineObj,ta); 
lineObj.style.textAlign = 'right'; 
lineObj.className='lineObj'; 
var string = ''; 
for(var no=1;no<200;no++){ 
if(string.length>0)string = string + '<br>'; 
string = string + no; 
} 

ta.onkeydown = function() { positionLineObj(lineObj,ta); }; 
ta.onmousedown = function() { positionLineObj(lineObj,ta); }; 
ta.onscroll = function() { positionLineObj(lineObj,ta); }; 
ta.onblur = function() { positionLineObj(lineObj,ta); }; 
ta.onfocus = function() { positionLineObj(lineObj,ta); }; 
ta.onmouseover = function() { positionLineObj(lineObj,ta); }; 
lineObj.innerHTML = string; 
} 

function positionLineObj(obj,ta) 
{ 
obj.style.top = (ta.scrollTop * -1 + lineObjOffsetTop) + 'px'; 
} 
+0

可能不會重新發明輪子並使用像YUI這樣強大的功能:http://yuilibrary.com/yui/docs/editor/ –

+0

我編輯了我的問題。請考慮重新開放。 – Janty

+0

我已經做了一個rnd並再次發佈需求作爲 – Janty

回答

2

而是有了這樣的文本區域的工作,你可能想使用CONTENTEDITABLE標籤。

下面是一個可能看起來像什麼的例子。

HTML:

<div class="orderedList" contenteditable="true"> 
</div> 

JQuery的:

var yourContent = "<ol><li>Go to home.</li><li>I need to installl window 8 and sql server 2012 by tommorow so that i can work with my project well and Need to clarify.</li><li>Test application.</li></ol>"; 

$('.orderedList').html(yourContent); 

然後你可以使用一些JQuery的權謀與形式提交。

希望這會有所幫助!

+0

謝謝,但我需要在textarea中輸入文本時,並按下輸入時應自動添加新的行號。我已經嘗試過,但我不能爲paragrah類型做。 – Janty

相關問題