切换文本区域文本,但保留对文本的更改
Toggle textarea text, but retain changes to the text
我正在尝试使用复选框来禁用和启用文本区域,同时切换框中的文本。我唯一的问题是我无法保留启用文本区域时所做的更改。文本区域最初处于禁用状态,并保存初始文本。启用文本区域后,文本将变为可编辑状态。如果重新选中该复选框,更改将消失,原始文本将重新出现 - 切换回来会删除更改(这不是我想要的)。我想来回切换文本,但不删除更改。我相信最好的方法是保留变量中的更改?我复制了下面的代码:
function toggleDisabled(_checked) {
document.getElementById('tjh').disabled = _checked ? true : false;
document.getElementById('tjh').value= "initial text";
}
<form>
<input type="checkbox" checked name="name1" onchange="toggleDisabled(this.checked)"/>
<textarea disabled name="name2" id="tjh">initial text</textarea>
</form>
您无需在每次选中或取消选中复选框时从textarea
中读取值并将其存储到变量中。 你也不需要(或应该)在你的javascript中设置textarea
的初始值。 在 HTML 中设置初始textarea
内容,然后使用 javascript 将事件侦听器附加到复选框,该复选框将根据是否选中在元素中添加/删除 disabled
属性。
你可以在HTML元素上使用onChange
属性,并像你原来一样传入javascript函数,但IMO这样做不必要地将HTML和Javascript结合在一起;这使得进行更改和阅读变得更加困难。
<form>
<input type="checkbox" checked name="name1" id='name1' />
<textarea disabled name="name2" id="tjh">Initial text</textarea>
</form>
<script type='text/javascript'>
// Grab HTML elements by element's id
var txtBox = document.getElementById('tjh');
var checkBox = document.getElementById('name1');
var customText = 'initial text';
// Attach event listener to checkbox
checkBox.addEventListener('click', function(evt, el) {
// If checked, then save current textarea value and disable textarea
if (evt.target.checked) {
customText = txtBox.value;
txtBox.value = 'initial text';
txtBox.setAttribute('disabled', evt.target.checked);
}
// Otherwise restore text and reenable the textarea by removing disabled attribute from HTML element
else {
txtBox.value = customText ;
txtBox.removeAttribute('disabled');
}
}, false)
</script>
编辑:添加了自定义文本变量以在禁用/启用复选框时存储/恢复txtBox值
如果我理解正确,你不能只将文本存储在变量中吗?
相关文章:
- 在mvc应用程序中,在回发时保留最初隐藏的文本框的隐藏或可见状态
- 当设置addFromAutocompleteOnly时,剩余文本将保留在输入字段中
- 离开页面导航后保留文本区域内容
- 在文本区域中保留换行符.value
- 在文本中保留撇号
- 单击提交按钮后如何保留文本框值
- 防止Javascript注入(但保留文本格式和图像)
- Jquery:如何在保留文本的同时打开字符串的所有span标记
- 替换*variable*文本,但保留大小写
- 用javascript更改文本并保留src
- 通过javascript保留文本区域换行符
- 使用链接截断html中的文本以显示更多/更少并将元素保留在里面
- 如何在文本节点中保留空格
- 键入时保留占位符的文本输入
- 如何从保留换行符的 window.prompt() 返回文本
- 保留单击其单选按钮的文本框的值
- 使用 javascript 动态更改文本时保留 CSS
- 如何使文本在重新加载后保留
- 提交后,将用户输入文本保留在输入框中
- 将所选文本保留在输入焦点上