亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2015年06月26日 15:16:21   作者:jcwKyl  
這篇文章主要介紹了javascript實現textarea中tab鍵的縮排處理方法,涉及javascript處理鼠標事件及頁面元素的相關技巧,需要的朋友可以參考下

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

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

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

復制代碼 代碼如下:
sel =event.srcElement.document.selection.createRange()

這一句會發(fā)生錯誤:
ncaught exception TypeError: Cannot read property 'selection' of undefined

代碼在IE中正常執(zhí)行,如下:

<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程序設計有所幫助。

相關文章

  • JS數組合并push與concat區(qū)別分析

    JS數組合并push與concat區(qū)別分析

    這篇文章主要介紹了JS數組合并push與concat區(qū)別,結合實例形式分析了JavaScript中針對數組合并操作使用push與concat的區(qū)別,需要的朋友可以參考下
    2015-12-12
  • 開發(fā)用到的js封裝方法(20種)

    開發(fā)用到的js封裝方法(20種)

    在本問中我們給大家總結了20種開發(fā)中常用到的JS封裝方法,有需要的讀者們可以學習下。
    2018-10-10
  • 深入淺析JavaScript中prototype和proto的關系

    深入淺析JavaScript中prototype和proto的關系

    prototype,每一個函數對象都有一個顯示的prototype屬性,而proto每個對象都有一個名為_proto_內部隱藏屬性。本文給大家介紹JavaScript中prototype和proto的關系,需要的朋友參考下
    2015-11-11
  • xmlplus組件設計系列之網格(DataGrid)(10)

    xmlplus組件設計系列之網格(DataGrid)(10)

    xmlplus 是一個JavaScript框架,用于快速開發(fā)前后端項目。這篇文章主要介紹了xmlplus組件設計系列之xmlplus網格,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 擴展String功能方法

    擴展String功能方法

    擴展String功能方法...
    2006-09-09
  • 分享7個殺手級JS小技巧

    分享7個殺手級JS小技巧

    這篇文章主要分享的是7個殺手級JS小技巧,主要分享的小技巧有數組亂序、復制到剪貼板、數組去重、檢測黑暗模式、滾動到頂部,下文章詳細代碼實現,需要的小伙伴可以參考一下
    2022-02-02
  • jsTree事件和交互以及插件plugins詳解

    jsTree事件和交互以及插件plugins詳解

    這篇文章主要為大家詳細介紹了jsTree事件和交互以及插件plugins的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 10個最受歡迎的 JavaScript框架(推薦)

    10個最受歡迎的 JavaScript框架(推薦)

    這篇文章主要介紹了JavaScript框架特性,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • 微信小程序實現獲取準確的騰訊定位地址功能示例

    微信小程序實現獲取準確的騰訊定位地址功能示例

    這篇文章主要介紹了微信小程序實現獲取準確的騰訊定位地址功能,結合實例形式詳細分析了微信小程序使用騰訊地理位置接口的相關注冊、操作步驟及接口使用技巧,需要的朋友可以參考下
    2019-03-03
  • Bootstrap table 定制提示語的加載過程

    Bootstrap table 定制提示語的加載過程

    bootstrap-table是在bootstrap-table的基礎上寫出來的,專門用于顯示數據的表格插件。這篇文章主要介紹了Bootstrap table 定制提示語,需要的朋友可以參考下
    2017-02-02

最新評論