1. 程式人生 > >點選文字變成可編輯的文字

點選文字變成可編輯的文字

方法一(JS控制):
首先弄清楚我們完成這個工作要做些什麼:
1、點選文建立一個文字框(input);
2、將原文字的內容放到文字框裡;
3、當我們點選別的區域時文字框變成不可編輯的文字;
4、此時文字應該是修改過後的(如果有修改);
搞清楚原理那麼實現起來就很簡單了,附上原始碼:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>Document</title
>
<style> p{ line-height: 30px; font-size: 26px; margin: 50px; } .edit{ height: 30px;line-height: 30px; font-size: 16px; padding: 0 10px; } </style> <script type="text/javascript" src="jquery-3.1.1.min.js"></script> <script> $(function(){ $('p'
).click(function(){ var td=$(this); //為後面文字框變成文字鋪墊 var text=$(this).text(); var input=$('<input type="text" class="edit" value="'+text+'">'); $(this).html( input ); $('input').click(function(){ return false; }); //阻止表單預設點選行為
$('input').select(); //點選自動全選中表單的內容 $('input').blur(function(){ var nextxt=$(this).val(); td.html(nextxt); }); //表單失去焦點文字框變成文字 }); })
</script> </head> <body> <p>這是一段可以編輯的文字</p> </body> </html>

在這段程式碼中關於開始為變數td賦值this,這是因為後面點選別的地方時需要將文字框變成文字,而html()函式用於設定或返回當前jQuery物件所匹配的DOM元素內的html內容。該函式的用途相當於設定或獲取DOM元素的innerHTML屬性值。就是說表單元素是不能使用html()這個方法的,所以在之前用箇中間變數儲存this的值。
方法二:
contentEditable是html中的一個屬性。設定html的contentEditable=‘true’時,即可開啟該元素的編輯模式。

<p contenteditable = "true">這是一段可以編輯的文字</p>