具有大胆选项的Contenteditable div

时间:2016-12-09 08:59:08

标签: jquery contenteditable bold italic

我想使用粗体斜体选项制作可信的div,以便在具有相同选项的keyup上的另一个div中显示内容。 我设法显示文本,但没有选项。请帮忙

HTML:

<button onclick="document.execCommand('bold');">B</button>
<button onclick="document.execCommand('italic');">I</button>
<div id="textarea" contenteditable></div>
<div id="textarea-show"></div>

jquery的:

$('#textarea').keyup(function() {
  $('#textarea-show').html($(this).text());
});

的CSS:

#textarea { background-color: #fff;
  border: 1px solid #ccc;
  color: #555;
  font-size: 14px;
  height: 34px;
  width: 450px;
}

  #textarea-show{font-size: 2rem;
  color:#666;
  height:50px;
  border: 1px solid #ccc;
  width: 450px;
}

例如:https://jsfiddle.net/gqmLtct7/1/

2 个答案:

答案 0 :(得分:1)

您必须使用CSS font-stylefont-weightoutput text转换为粗体斜体下面,

$('#textarea').keyup(function() {
  $('#textarea-show').html($(this).text());
});
$(".bld").on('click',function(){
 var a = $('#textarea-show').html($("#textarea").text());
 $(a).css('font-weight','bold');
  $(a).css('font-style','normal');
});

$(".itl").on('click',function(){
 var a = $('#textarea-show').html($("#textarea").text());
 $(a).css('font-style','italic');
 $(a).css('font-weight','normal');
});
#textarea { background-color: #fff;
    border: 1px solid #ccc;
    color: #555;
    font-size: 14px;
    height: 34px;
    width: 450px;}
    
#textarea-show{font-size: 2rem;
  color:#666;
  height:50px;
  border: 1px solid #ccc;
  width: 450px;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="bld">B</button>
<button class="itl">I</button>
<div id="textarea" contenteditable></div>
<div id="textarea-show"></div>

更新 - 要制作选定的文字bolditalic,您需要按照document.execCommand的建议使用@Ionut

  

当HTML文档切换到designMode时,文档   object公开execCommand方法,该方法允许运行命令   操纵可编辑区域的内容。

$('#textarea').keyup(function() {
  $('#textarea-show').html($(this).text());
});
$(".bld").on('click',function(){
	document.execCommand('bold');
  var a = $("#textarea").html();
	$('#textarea-show').html(a);
});

$(".itl").on('click',function(){
	document.execCommand('italic');
  var a = $("#textarea").html();
	$('#textarea-show').html(a);
});
#textarea { background-color: #fff;
    border: 1px solid #ccc;
    color: #555;
    font-size: 14px;
    height: 34px;
    width: 450px;}
    
#textarea-show{font-size: 2rem;
  color:#666;
  height:50px;
  border: 1px solid #ccc;
  width: 450px;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="bld">B</button>
<button class="itl">I</button>
<div id="textarea" contenteditable></div>
<div id="textarea-show"></div>

答案 1 :(得分:1)

您可以添加两个类,一个让我们说bold,另一个italic,设置样式并点击按钮来激活/停用粗体/斜体(您可以运行代码)下面的代码段或者您也可以找到更新的jsfiddle here):

<强>更新

在OP的评论之后,由于他想将粗体和斜体添加到选定的文本中,我已经更新了我的答案。

更新后的jsfiddle

更新的代码:

$('#textarea').keyup(function() {
  $('#textarea-show').html($(this).text());
});

$('#bold_btn').on('click', function() {
  //$('#textarea, #textarea-show').toggleClass('bold');
  document.execCommand('bold');
  var text = document.getElementById('textarea').innerHTML;
  $('#textarea-show').html(text);
});
$('#italic_btn').on('click', function() {
  //$('#textarea, #textarea-show').toggleClass('italic');
  document.execCommand('italic');
  var text = document.getElementById('textarea').innerHTML;
  $('#textarea-show').html(text);
});
#textarea {
  background-color: #fff;
  border: 1px solid #ccc;
  color: #555;
  font-size: 14px;
  height: 34px;
  width: 450px;
}
#textarea-show {
  font-size: 2rem;
  color: #666;
  height: 50px;
  border: 1px solid #ccc;
  width: 450px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id='bold_btn'>B</button>
<button id='italic_btn'>I</button>
<div id="textarea" contenteditable></div>
<div id="textarea-show"></div>