div模拟文本框textarea

需求:利用highlight.js对文本框中的内容进行高亮显示

1.highlight.js使用

js中:<script src="js/highlight/highlight.pack.js"></script>

  <script type="text/javascript">

    hljs.initHighlightingOnLoad();//SQL高亮显示

    $(document).ready(function() {

      $("pre code").each(function(i, block) {

        hljs.highlightBlock(block);

      });

    });

  </script>

html中:<pre> <code class="lang-javascript"> 内容</code> </pre>

2.highlight.js应用于<textarea>无效,因而用 div模拟文本框textarea

无效示例:<pre>

       <code>

          <textarea id="sql" rows="14" cols="80" name="sqlStatement">

            <s:property value="udq.sqlStatement"/>

          </textarea>
                        </code>

     </pre>

有效div模拟文本框:<div id="sql"  contenteditable placeholder="请输入文字">

           <pre>

            <code>

              <s:property value="udq.sqlStatement"/>

            </code>

           </pre>
                          </div>

对于<pre><code>中的内容不随div的宽度换行问题,应用css样式:

  white-space: pre-wrap;
  word-wrap: break-word;

 

其中:介绍下HTML5里contenteditable属性:(参考https://w3c.github.io/editing/contentEditable.html#contenteditable

它主要的属性值有:

[html] view plain copy
  1. contenteditable="inherit"  
  2. contenteditable=""  
  3. contenteditable="events"  
  4. contenteditable="caret"  
  5. contenteditable="typing"  
  6. contenteditable="plaintext-only"  
  7. contenteditable="true"  
  8. contenteditable="false"  

其实在模拟文本框时,常用的就是"plaintext-only"、"true","plaintext-only"可以实现可以让编辑区域只能键入纯文本

其实css中有一个属性(user-modify)也能实现让元素内只能输入纯文本,但是由于目前好像只有webkit内核支持(-webkit-),所以效果没上面好

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值