相关疑难解决方法(0)

获取范围的开始和结束偏移量相对于其父容器

假设我有这个HTML元素:

<div id="parent">
 Hello everyone! <a>This is my home page</a>
 <p>Bye!</p>
</div>
Run Code Online (Sandbox Code Playgroud)

用户用鼠标选择"家".

我希望能够确定#parent他的选择中有多少个字符开始(以及#parent他选择结束时有多少个字符结束).即使他选择了HTML标记,这也应该有效.(我需要它在所有浏览器中工作)

range.startOffset 看起来很有希望,但它只是相对于范围的直接容器的偏移量,并且仅当容器是文本节点时才是字符偏移量.

javascript textrange

66
推荐指数
3
解决办法
6万
查看次数

每个单词下面的Jquery-ui自动完成下拉列表

我正在使用jquery-ui的Autocomplete.在多个值中,您可以获得空格后每个单词的下拉列表,但下拉列表显示为输入框的大小.是否有可能使下拉列表出现在每个光标下方,其宽度等于下拉字而不是输入框的整个长度?

编辑:示例(类似Google的搜索框):

当你去谷歌并在句子继续时输入一个长句子,在每个单词之后,为光标位置下方的每个单词出现一个自动完成下拉列表.所以我需要一个类似的下拉列表,可以添加到jQuery Autocomplete上

在此输入图像描述

我的功能很大,因为它具有多个单词的功能,并按字母顺序显示数组.这是<script代码:

    <script>

    $(function() {

            var availableTags = <?php echo json_encode($sometags); ?>;


            function split( val ) {
            return val.split( / \s*/ );
            }
            function extractLast( term ) {
            return split( term ).pop();
            }
             $( "#query" )
            // don't navigate away from the field on tab when selecting an item
            .bind( "keydown", function( event ) {
            if ( event.keyCode === $.ui.keyCode.TAB &&
            $( this ).data( "autocomplete" ).menu.active ) {
            event.preventDefault();
            }
            })
            .autocomplete({
            minLength: …
Run Code Online (Sandbox Code Playgroud)

jquery jquery-ui autocomplete jquery-ui-autocomplete

11
推荐指数
1
解决办法
1万
查看次数

测试光标是否位于textarea的第一行(带有软换行符)

鉴于textarea的内容是这样的

     ––––––––––––––––––––––––––
    | This is some text, which |
    | wraps like this.         |
     ––––––––––––––––––––––––––

如何判断文本光标是否位于textarea的第一行?

显然,\n如果想要查看光标是否出现在第一个换行符之前,检查换行符()是否有效,但测试"软"换行符似乎更具挑战性.

这是一个试验的样本jsFiddle.

我还没有提出一个策略,但我怀疑它可能涉及复制文本直到光标位置进入克隆的textarea(或div),并且只要需要它就使宽度变宽,这样它就不会包装.如果克隆区域的宽度小于原始宽度,则光标似乎必须位于第一行.可能有一个更简单的选择,更优雅的东西,或(最重要的)现有的,经过良好测试的解决方案.

目标浏览器是Webkit(Chrome/Safari)和Firefox.即IE兼容性在这个时候不是一个问题(如果这有任何区别).

谢谢阅读.

编辑:寻找文本插入符号的行号,而不是鼠标光标.

falsarella给出了一个很好的答案,突出了问题的模糊性.我想要的是文本光标("插入符号"可能是一个更好的词)是否在第一行.我已经更新了问题和jsFiddle来反映.

html javascript jquery dom textarea

7
推荐指数
1
解决办法
1486
查看次数

Rangy(JS/jQuery)拆分节点

如何在某个位置(选择)拆分节点/元素.

示例我有这个标记:

<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.

javascript jquery rangy

6
推荐指数
1
解决办法
1900
查看次数