如何使用 JavaScript 从文本框控件中获取选定的文本
我有一个文本框和一个链接按钮。 当我编写一些文本,选择其中一些文本,然后单击链接按钮时,从文本框中选择的文本必须显示在消息框中。
我该怎么做?
当我单击下面文本框的提交按钮时,消息框必须显示 Lorem ipsum。 因为在区域中选择了“Lorem ipsum”。
如果我从页面中选择任何文本并单击提交按钮,它就可以工作,但是如果我将文本写入文本框并创建它,它就不能工作。 因为当我点击另一个空间时,文本框的选择被取消。
现在的问题是,当我从文本框中选择文本并单击任何其他控件或空间时,所选的文本仍然必须被选择。
该怎么做呢?
I have a textbox and a link button.
When I write some text, select some of it and then click the link button, the selected text from textbox must be show with a message box.
How can I do it?
When I click the submit button for the textbox below, the message box must show Lorem ipsum. Because "Lorem ipsum" is selected in the area.
If I select any text from the page and click the submit button it is working, but if I write a text to textbox and make it, it's not. Because when I click to another space, the selection of textbox is canceled.
Now problem is that, when I select text from textbox and click any other control or space, the text, which is selected, must still be selected.
How is it to be done?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
好的,这是我的代码:
问题是,虽然我为 Internet Explorer 提供的代码在很多网站上都给出了,但我无法使其在我的 Internet Explorer 6 在我当前的系统上。 也许它对你有用,这就是我给出它的原因。
您寻找的技巧可能是 .focus() 调用将焦点返回到文本区域,以便重新激活选择。
我通过 onKeyDown 事件得到了正确的结果(选择内容):
所以代码是正确的。 同样,问题是通过单击按钮进行选择......我继续搜索。
我对使用
li
标记绘制的按钮没有任何成功,因为当我们单击它时,Internet Explorer 会取消选择之前的选择。 上面的代码使用一个简单的input
按钮,但是......OK, here is the code I have:
The problem is, although the code I give for Internet Explorer is given on a lot of sites, I cannot make it work on my copy of Internet Explorer 6 on my current system. Perhaps it will work for you, and that's why I give it.
The trick you look for is probably the .focus() call to give the focus back to the textarea, so the selection is reactivated.
I got the right result (the selection content) with the onKeyDown event:
So the code is correct. Again, the issue is to get the selection on click on a button... I continue to search.
I didn't have any success with a button drawn with a
li
tag, because when we click on it, Internet Explorer deselects the previous selection. The above code works with a simpleinput
button, though...这是一个更简单的解决方案,基于文本选择发生在 mouseup 上的事实,因此我们为此添加一个事件侦听器:
这适用于所有浏览器。
如果您还想通过键盘处理选择,请使用相同的代码为
keyup
添加另一个事件侦听器。如果不是这个 2001 年提交的 Firefox 错误< /a>(是的,14 年前),我们可以用
window.getSelection().toString()
替换分配给window.mySelection
的值,该值适用于 IE9+和所有现代浏览器,并且还可以获取在 DOM 的非文本区域部分中进行的选择。Here's a much simpler solution, based on the fact that text selection occurs on mouseup, so we add an event listener for that:
This works in all browsers.
If you also want to handle selection via the keyboard, add another event listener for
keyup
, with the same code.If it weren't for this Firefox bug filed back in 2001 (yes, 14 years ago), we could replace the value assigned to
window.mySelection
withwindow.getSelection().toString()
, which works in IE9+ and all modern browsers, and also gets the selection made in non-textarea parts of the DOM.对于 Opera、Firefox 和 Safari,您可以使用以下函数:
然后,您只需将对文本字段元素(如 textarea 或 input 元素)的引用传递给该函数:
或者,如果您想要
然后,您只需执行以下操作:
例如。
For Opera, Firefox and Safari, you can use the following function:
Then, you just pass a reference to a text field element (like a textarea or input element) to the function:
Or, if you want <textarea> and <input> to have a getSelection() function of their own:
Then, you'd just do:
for example.
我是 jQuery-textrange 的忠实粉丝。
下面是一个非常小的、独立的示例。 下载jquery-textrange.js并将其复制到同一文件夹。
I am a big fan of jQuery-textrange.
Below is a very small, self-contained, example. Download jquery-textrange.js and copy it to the same folder.