javascript - 通过单击按钮将 textarea 内容更改回其起始形式
问题描述
我有一个<p id="tag">
可以由用户单击按钮进行编辑。
编辑按钮 onclick 功能:
function p_edit() {
var content= $("#tag").text();
"now var content is equal to tag's content"
$("#tag-form2").css("display", "block")
$("#tag").css("display", "none")
$(".user-holder4").css("display", "none")
$("#id_tag").text(content)
"above the content obtained from the tag is appended to the textarea"
$(".kokomo-holder2").css("display","block")
$(".login-button4").css("display","block")
$(".login-button6").css("display","block")
}
"as you can see, the button gets the tag's content and appends it to the textarea of which the id is 'id_tag'"
单击编辑按钮后,用户可以更改文本或按取消按钮。
取消按钮onclick功能:
function cancel(){
$(".bilgilendirme-holder2").css("display","none")
$(".login-button4").css("display","none")
$(".login-button5").css("display","none")
$(".login-button6").css("display","none")
$("#tag-form2").css("display","none")
$("#tag").css("display","block")
$(".user-holder4").css("display","block")
$("#id_tag").text(content)
}
"this function reverses what was done by the edit function so the <p> tag becomes visible again"
当编辑完成并且之后重新单击编辑按钮时,它可以完美地工作。
当用户按下编辑按钮,在文本区域中进行更改然后按下取消时,就会出现此问题。在这种情况下,当重新单击编辑按钮时,textarea 的内容仍然是用户编辑的方式,但它应该与<p>
标签的内容相同。
这可能是因为浏览器缓存了 textarea 内容,只要附加的内容与浏览器缓存的初始内容相同,textarea 的文本就会保持用户更改的方式。
我为 textarea 分配了 'autocomplete="off"' 属性,但它不起作用。
我想知道是否有一种方法可以摆脱这个问题,而无需在每次单击编辑按钮时删除和重新创建 textarea。
解决方案
我认为您的取消按钮逻辑应该如下所示。
$(document).ready(function(){
$("#Edit").on('click',EditOrSave);
$("#cancel").on('click',Cancel);
})
function EditOrSave(){
var btn=$("#Edit");
if(btn.val()=="Edit")
{
window.textContentofP=$("#tag").text();
$("#editcontent2").show();
$("#editcontent2").val(window.textContentofP);
$("#tag").hide();
$("#cancel").show();
btn.val("Save");
}
else{
$("#tag").text($("#editcontent2").val());
$("#editcontent2").hide();
$("#tag").show();
$("#cancel").hide();
btn.val("Edit");
}
}
function Cancel(){
$("#tag").text(window.textContentofP);
$("#editcontent2").hide();
$("#tag").show();
$("#cancel").hide();
$("#Edit").val("Edit");
$("#cancel").hide()
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p id="tag">Hello How are you</p>
<textarea id="editcontent2" style="display:none;"></textarea>
<input type="button" id="Edit" value="Edit"/>
<input type="button" id="cancel" style="display:none;" value="Cancel" />
推荐阅读
- python - 使用队列进行迭代河内塔的逻辑?
- javascript - 如何从方法 JS 访问类变量
- javascript - Javascript Promise Chaining - 它被接受了吗?
- c# - IMAP 帐户的 MailItem.Save 异常,“无法执行操作,因为邮件已更改”
- angular - 我想在我的下拉菜单中进行两种方式绑定
- sql - Sql在firebird数据库中选择不同
- c++ - PeekMessageW 函数实际上是在发送消息吗?
- react-native - 反应本机 PanResponder 慢
- maven - 无法将动态值从 eclipse 传递到 POM
- javascript - JS:检查浏览器是否支持焦点选项