不在焦点时隐藏textarea字段

时间:2017-05-11 03:54:18

标签: javascript html css typescript

我想创建一个可以在我点击其他位置时隐藏<textarea>字段的功能。这意味着<textarea>字段将隐藏,<textarea>内的字词将保留。

您可以在Mapmarker National Geographic上查看示例,方法是单击左侧的文本按钮,编写消息,然后单击文本区域(见下文)。
Text button

这是我目前的代码:

&#13;
&#13;
textarea {
  background-image: none;
}

.textlabel-textarea {
  width: 200px;
  font-size: inherit!important;
  color: inherit!important;
}

.textlabel-text {
  width: auto;
  min-width: 200px;
  max-width: 500px;
  white-space: nowrap;
}

.hidden {
  display: none;
}
&#13;
<textarea class="textlabel-textarea rows=" 2 "" [hidden]="!tab1"></textarea
    <div class="textlabel-text" [hidden]="!tab2"></div>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:2)

这不能用纯CSS完成,而是需要Javascript。
我在下面使用jQuery,只需在<div>外点击时创建一个<textarea>的值<textarea>即可。

$(document).on('click', function (e) {
	$('textarea').hide();
	$('textarea').after("<div class='text'>" + $('textarea').val() + "</div>");
  $(this).unbind("click");
});

$('textarea').on('click', function(e) {
    e.stopPropagation();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<textarea></textarea>

更新版本:

由于OP评论并说它确实需要可编辑,并且只使用HTML和CSS,这里有一个(更不那么漂亮)的版本来回答这个问题:

textarea:focus {
  border: 1px solid #A9A9A9;
  background: white;
  resize: both;
}

textarea {
  background: 0;
  border: 0;
  resize: none;
  overflow: auto;
}
<textarea autofocus></textarea>

答案 1 :(得分:0)

$(".draggable").draggable();

$(document).on('blur', 'textarea', function () {
  $(this).parent().draggable( 'disable' );
  $(this).after("<div class='text'>" + $(this).val() + "</div>").remove();
});

$(document).on('click', '.text', function() {
  $(this).parent().draggable( 'enable' );
  $(this).after("<textarea>" + $(this).html() + "</textarea>").remove();
});
.draggable {
    border: 1px solid #000;
    padding: 10px;
    width: 200px;
}
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<div id="1" class="ui-widget-content draggable">
  <textarea></textarea>
</div>

<div id="2" class="ui-widget-content draggable">
  <textarea></textarea>
</div>

<div id="3" class="ui-widget-content draggable">
  <textarea></textarea>
</div>