如果我不知道哪一个是活动的(聚焦的),如何从文本框/文本区域中获取所选文本.我正在尝试创建一个小书签,它将纠正页面上任何类型的输入中的选定文本.
我不知道这是否可行,但我希望有一个输入字段,我将拥有一个用户无法编辑的值.但是,我不希望输入字段是"只读",因为我仍然希望用户能够在值之后添加文本.
如果您对如何做到这一点有任何想法,请告诉我,这将对我有所帮助.
编辑:我使用HTML表单.
我正在尝试在文本区域中的输入插入符号上方创建工具提示.如果我可以在文本区域中获得插入符号的x,y坐标,这将很容易,但是我已经搜索了一会儿并且无法弄清楚如何做到这一点.
假设用户在文本区域中键入然后按某个键(例如@符号).我试图在文本区域插入符号上方显示一个小工具提示.
有任何想法吗?
我需要获取用户选择的textarea区域,然后在其<a>周围插入标签.
我使用它来获取用户选择的区域:
var textComponent = document.getElementById('article');
var selectedText;
if (document.selection != undefined)
{
textComponent.focus();
var sel = document.selection.createRange();
selectedText = sel.text;
}
// Mozilla version
else if (textComponent.selectionStart != undefined)
{
var startPos = textComponent.selectionStart;
var endPos = textComponent.selectionEnd;
selectedText = textComponent.value.substring(startPos, endPos)
}
Run Code Online (Sandbox Code Playgroud)
现在,我知道我可以对用户选择的文本进行字符串搜索并在其周围插入标签,但是如果用户选择的文本在文本中出现两次会发生什么情况,例如.
你好,告别你,再见.
如果用户突出显示他们想要的链接的第二个"你",那么字符串替换肯定会在"你"的每个实例周围放置一个标签.
什么是最好的方法呢?
如何在某个位置(选择)拆分节点/元素.
示例我有这个标记:
<p>This is <a href="">a te|st</a>, you like?</p>
Run Code Online (Sandbox Code Playgroud)
(此管道代表位置/选择)
我想将其转换为:
<p>This is <a href="">a te</a></p>|<p><a href="">st</a>, you like?</p>
Run Code Online (Sandbox Code Playgroud)
保持选择.
有任何想法吗?
我使用Rangy库和jQuery,但如果适用的话可以使用原始JS.
假设抽象验证器回调根据新字符串值是否有效返回 true 或 false:
function isValid(text) {
/* arbitrary code, returns true or false */
}
Run Code Online (Sandbox Code Playgroud)
我想在 HTML/JavaScript 的输入字段中应用此回调。验证器中的代码可以是任何类型的验证器。
我见过人们使用keyup事件来阻止输入某些字符。这是有缺陷的方法,显然无法验证整个输入字段。
我尝试取消input活动,但不起作用:
myInputField.addEventListener("input", function(e) {
console.log(e);
e.preventDefault();
return false;
});
Run Code Online (Sandbox Code Playgroud)
在我遇到的大多数 GUI 框架(Java Swing、C++ Qt)中,这就像在输入字段上分配验证器回调一样简单。我如何在 JavaScript 中执行此操作?
我已经环顾四周,但其他答案并没有真正帮助我.
我想创建一个小的WYSIWYG编辑器,只需要添加链接和添加列表的选项.我的问题是当点击其中一个链接/按钮(例如"添加链接")时,如何在文本区域中的选定文本周围添加标签?
我正在iframe中使用designMode构建一个简单的WYSIWYG编辑器,目前我可以使所选文本变为粗体,斜体和下划线以及链接,并且它们工作正常.
但我想知道什么时候caret是内部的b,i,u,a,标签,这样我就可以通知当前的选择是勇敢的或任何用户.
例子:
Hello <b>Stackover|flow</b> is cool!=你在b标签内
<i>Be|st place</i>!=你在i标签内
Hello <a href="http://stackoverflow.com/">Go|od stuff!</a>=你在a标签内
没有图书馆,我想学习这个东西:)
我有这个文本框:
<input type="text" name="url" id="url-input" />
Run Code Online (Sandbox Code Playgroud)
而这段代码:
var inputText = "Hello World";
$(document).ready(function() {
$("#url-input").focus();
$("#url-input").val(inputText);
});
Run Code Online (Sandbox Code Playgroud)
实际上,光标显示在文本框末尾的"Hello World"之后(无论以何种顺序添加焦点或更改值).我怎么能把它移到前面?
谢谢
编辑 - 这是jsFiddle:http://jsfiddle.net/dmRND/
我正在开发一项允许编辑文本的服务.为了帮助用户完成此过程,我想允许用户将文本字段设置为覆盖模式,如Word中所示,等等.如何将HTML文本框的行为更改为覆盖而不是插入文本作为用户类型?
例如,如果文本框有文本:
This is a trst.
Run Code Online (Sandbox Code Playgroud)
用户可以在r和t之间单击,键入单个e,然后文本将是
This is a test.
Run Code Online (Sandbox Code Playgroud)
用光标e和s.之间的光标.我目前正在使用jQuery,因此使用该方法或纯javascript的方法将是首选.不过,我会接受任何合理的解决方案.
javascript ×8
jquery ×6
html ×3
bookmarklet ×1
caret ×1
field ×1
input ×1
parent ×1
rangy ×1
readonly ×1
validation ×1
wysiwyg ×1