萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> javascript實現textarea中tab鍵的縮排處理方法

javascript實現textarea中tab鍵的縮排處理方法

   本文實例講述了javascript實現textarea中tab鍵的縮排處理方法。分享給大家供大家參考。具體如下:

  網上搜索了一下相關的解決方法,其它的有使用兩三行javascript解決的,但都有一些小小的問題。還有使用JQuery的,也非常簡潔。

  本文的javascript代碼實現了在TEXTAREA中輸入TAB鍵並自動縮進的功能。不過這段代碼在谷歌浏覽器中不能正常執行,在

  代碼如下:

  sel =event.srcElement.document.selection.createRange()

  這一句會發生錯誤:

  ncaught exception TypeError: Cannot read property 'selection' of undefined

  代碼在IE中正常執行,如下:

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 <mce:script type="text/javascript"> <!-- function editTab() { var code, sel, tmp, r var tabs="" event.returnValue = false sel =event.srcElement.document.selection.createRange() r = event.srcElement.createTextRange() switch (event.keyCode) { case (8) : if (!(sel.getClientRects().length > 1)) { event.returnValue = true return } code = sel.text tmp = sel.duplicate() tmp.moveToPoint(r.getBoundingClientRect().left, sel.getClientRects()[0].top) sel.setEndPoint("startToStart", tmp) sel.text = sel.text.replace(/^/t/gm, "") code = code.replace(/^/t/gm, "").replace(//r/n/g, "/r") r.findText(code) r.select() break case (9) : if (sel.getClientRects().length > 1) { code = sel.text tmp = sel.duplicate() tmp.moveToPoint(r.getBoundingClientRect().left, sel.getClientRects()[0].top) sel.setEndPoint("startToStart", tmp) sel.text = "/t"+sel.text.replace(//r/n/g, "/r/t") code = code.replace(//r/n/g, "/r/t") r.findText(code) r.select() } else { sel.text = "/t" sel.select() } break case (13) : tmp = sel.duplicate() tmp.moveToPoint(r.getBoundingClientRect().left, sel.getClientRects()[0].top) tmp.setEndPoint("endToEnd", sel) for (var i=0; tmp.text.match(/^[/t]+/g) && i<tmp.text.match(/^[/t]+/g)[0].length; i++) tabs += "/t" sel.text = "/r/n"+tabs sel.select() break default : event.returnValue = true break } } // --> </mce:script>

使用時:

         代碼如下: <textarea cols=80 rows=20 name="input" onkeydown="editTab()"></textarea>

  希望本文所述對大家的javascript程序設計有所幫助。

copyright © 萬盛學電腦網 all rights reserved