有没有办法编辑input或textarea使用javascript 的内容,并使用浏览器的"撤消"命令(例如ctrl-Z)可以撤消该更改?
我试图在选择的值中插入一个字符串,如"Foo {0} bar",如果用户选择了一个范围,则将所选范围插入到字符串中代替"{0} ".
例如,如果textarea包含"Example 1 2 3"并且光标位于"Example 1 | 2 3",那么该函数会将值更改为"Example 1Foo blah bar 2 3"(valueIfNothingSelected在这种情况下为"blah") .如果选择范围"1 2",则函数将改为将值更改为"示例Foo 1 2 bar 3".
在Chrome中,我测试了这个功能,并且它完成了它应该做的事情,但我无法扭转这一变化undo.
function insertTextAtCursor(text, valueIfNothingSelected) {
var field = $('textarea[name="task_log_description"]')[0];
var startPos = field.selectionStart;
var endPos = field.selectionEnd;
var processedText;
if (startPos == endPos) {
processedText = text.replace('{0}', valueIfNothingSelected);
field.value = field.value.substring(0, startPos) + processedText + field.value.substring(endPos, field.value.length);
field.selectionStart = startPos + text.indexOf('{0}');
field.selectionEnd = field.selectionStart …Run Code Online (Sandbox Code Playgroud) 当我有一个包含特定值的输入字段,并且某些 JavaScript 更改其值时,我过去可以单击该字段并按 Ctrl-Z 来恢复旧值。
好像不行了,是不是浏览器最近更新了?我做错了什么吗?有办法让它再次发挥作用吗?
setTimeout(function () {
document.getElementById("name").value = ""
}, 2000);Run Code Online (Sandbox Code Playgroud)
<input type="text" id="name" value="Sylvain" />Run Code Online (Sandbox Code Playgroud)