我的表单中包含textarea
和button
。如果有人在textarea中输入文本并单击该按钮,我希望该函数能够搜索" Tobias"进入textarea,如果是,请用" Hanna"最后将其复制到剪贴板。
如果我在textarea中输入...
托比亚斯很棒!
...然后点击按钮;我希望将其复制到剪贴板:
汉娜很棒!
但它不会奏效。这是到目前为止的代码:
$("button").click(function(){
var $textArea = $("textarea");
var $newText = $textArea.val().replace("Tobias", "Hanna");
$newText.select();
document.execCommand('copy');
});
答案 0 :(得分:3)
您无法对字符串执行.select()
。根据{{3}},其使用仅限于<input type="text">
和<textarea>
元素。
也许您正在寻找的是这样的:the documentation
$("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);
});
这会将textarea值更改为替换文本,复制它,然后将其更改回来,所有这些都不需要用户知道。
另外作为一个友好的说明...虽然<{1}}变量没有语法不正确,但我个人建议从名称中删除$newText
。
使用jQuery代码块时,那些熟悉该语言的人很可能会认为前缀为$
的变量是指jQuery对象/数组。在您的情况下,$
是基本$newText
,因此非常具有欺骗性。
答案 1 :(得分:1)
您需要缓存原始值,然后将新值放入可选择的元素中,以便您可以复制所选文本。然后你可以放回原始文本。
$("button").click(function(){
var original = $("textarea").val();
var updated = $("textarea").val().replace("Tobias", "Hanna");
$("textarea").val(updated);
$("textarea").select();
document.execCommand('copy');
$("textarea").val(original);
});
input[type=text] { height:1px, width:1px; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea>Tobias is great</textarea>
<button>Click Me</button>