Javascript 单击并复制文本区域中的字符串(jQuery)

Javascript 单击并复制文本区域中的字符串(jQuery),javascript,jquery,html,Javascript,Jquery,Html,我有一个带有文本区和按钮的表单。如果有人在文本区域中输入文本并单击按钮,我希望函数搜索文本区域中是否输入了“Tobias”,如果是,则将其替换为“Hanna”,最后将其复制到剪贴板 如果我在文本区域中输入这个 托比亚斯很棒 …然后单击按钮;我希望将其复制到剪贴板: 汉娜很棒 但这行不通。这是迄今为止的代码: $("button").click(function(){ var $textArea = $("textarea"); var $newText = $textArea.val().rep

我有一个带有
文本区
按钮
的表单。如果有人在文本区域中输入文本并单击按钮,我希望函数搜索文本区域中是否输入了“Tobias”,如果是,则将其替换为“Hanna”,最后将其复制到剪贴板

如果我在文本区域中输入这个

托比亚斯很棒

…然后单击按钮;我希望将其复制到剪贴板:

汉娜很棒

但这行不通。这是迄今为止的代码:

$("button").click(function(){
var $textArea = $("textarea");
var $newText = $textArea.val().replace("Tobias", "Hanna");
    $newText.select();
    document.execCommand('copy');
});

您需要缓存原始值,然后将新值放入可选择的元素中,以便可以复制选定的文本。然后你可以把原文放回去

$(“按钮”)。单击(函数(){
var original=$(“textarea”).val();
var updated=$(“textarea”).val().替换(“Tobias”、“Hanna”);
$(“textarea”).val(更新);
$(“textarea”).select();
document.execCommand('copy');
$(“textarea”).val(原件);
});
input[type=text]{高度:1px,宽度:1px;}

托比亚斯很棒

单击“我”
您需要缓存原始值,然后将新值放入可选择的元素中,以便复制所选文本。然后你可以把原文放回去

$(“按钮”)。单击(函数(){
var original=$(“textarea”).val();
var updated=$(“textarea”).val().替换(“Tobias”、“Hanna”);
$(“textarea”).val(更新);
$(“textarea”).select();
document.execCommand('copy');
$(“textarea”).val(原件);
});
input[type=text]{高度:1px,宽度:1px;}

托比亚斯很棒

单击“我”
您不能对字符串执行
。请选择()
。根据,其使用仅限于
元素

也许你要找的是这样的东西:

这会将textarea值更改为替换文本,将其复制,然后将其更改回原来的值,所有这些用户都不知道


另外,作为友好的提示。。。虽然您的
$newText
变量在语法上没有任何错误,但我个人建议从其名称中删除
$


当使用jQuery代码块时,熟悉该语言的人很可能会认为前缀为
$
的变量引用jQuery对象/数组。在您的例子中,
$newText
是一个基本的
字符串,因此它非常具有欺骗性。

您不能对字符串执行
.select()
。根据,其使用仅限于
元素

也许你要找的是这样的东西:

这会将textarea值更改为替换文本,将其复制,然后将其更改回原来的值,所有这些用户都不知道


另外,作为友好的提示。。。虽然您的
$newText
变量在语法上没有任何错误,但我个人建议从其名称中删除
$


当使用jQuery代码块时,熟悉该语言的人很可能会认为前缀为
$
的变量引用jQuery对象/数组。在你的例子中,
$newText
是一个基本的
字符串,所以它是很有欺骗性的。

Hm,不确定你创建的var/string可以被选择?Hm,不确定你创建的var/string可以被选择?我认为OP不希望文本框的值显示替换。这似乎更像是一个骗局:你认为你在复制textarea,但你复制的内容实际上被更改为替换名称。我不认为OP希望textbox的值显示替换内容。这似乎更像是一个骗局:你认为你在复制文本区域,但你复制的内容实际上被更改为替换名称。谢谢!就像我希望的那样工作!有没有办法添加更多我想替换的单词?假设我输入“Tobias is great!”,我希望输出为“Hanna is lovely!”,将“Tobias”替换为“Hanna”,将“great”替换为“lovely”。是的,我真的很感激这张友好的便条。我在教程中见过这种命名变量的方法,但显然我从未理解这样做的意义。谢谢很高兴我能帮忙。对于其他替换,您可以继续将它们附加到已经存在的替换<代码>替换(“托拜厄斯”、“汉娜”)。替换(“很棒”、“可爱”)
。如果你打算在一行中列出一系列的替换项,你可能希望在一个对象中列出更简洁的替换项。非常有用!再次感谢您@将变量设置为JQuery包装集(即
var$elements=$(“div”)时的tobiasg;
最好在变量前面加上
$
前缀,以提醒您该变量引用的是JQuery对象,而不是常规的JavaScript节点列表。谢谢!工作方式完全符合我的要求!有没有办法添加更多要替换的词?比如说,我输入了“Tobias is great!”并希望输出是正确的“汉娜很可爱!”,用“汉娜”替换“托拜厄斯”,用“可爱”替换“伟大”“。是的,我真的很感激这个友好的注释。我在教程中见过这种命名变量的方法,但显然从未理解这样做的意义。谢谢!很高兴我能提供帮助。对于其他替换,您可以继续将它们添加到已经存在的替换中。
.replace(“Tobias”,“Hanna”)。replace(“很棒”,“可爱”)
。如果您打算在一行中列出这些替换项,您可能希望在对象中列出更简洁的替换项。非常有用!再次感谢您!@tobiasg,当您将变量设置为JQuery包装集(即
var$elements=$(“div”)时;
最好在变量前面加上
$
前缀,以提醒您该变量引用的是JQuery对象,而不是常规JavaScript节点列表。
$("button").click(function(){
    var $textArea = $("textarea");
    var oldText = $textArea.val();
    var newText = oldText.replace("Tobias","Hanna");
    $textArea.val(newText).select();
    document.execCommand('copy');
    $textArea.val(oldText);
});