點選文字變成可編輯的文字
阿新 • • 發佈:2019-02-20
方法一(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>