【问题标题】:selectionStart-End with textareasselectionStart-End with textareas
【发布时间】:2016-07-11 13:28:46
【问题描述】:

我遇到了这个烦人的问题,我似乎无法在 textarea 中获取所选文本的开始和结束索引,我得到的只是这样的未定义:

$('#myarea').selectionStart; // return undefined

我是不是做错了什么?

【问题讨论】:

    标签: javascript jquery editor


    【解决方案1】:

    试试:

    $('#myarea')[0].selectionStart;
    

    为什么? jQuery 选择器不返回实际的 DOM 元素,而是返回包装的 jQuery 集合。 jQuery 使实际的 DOM 元素可以作为数组访问,所以如果你想使用第一个匹配的元素(在这种情况下,是唯一的一个,因为它是按 ID),你可以按照上面的方法进行。

    【讨论】:

    • 天哪,有用的晦涩知识!谢谢
    • 这是我早上 JS 拼图的最后一块。先生,您是救生员!顺便说一句,对于任何想要使用它来自动替换输入字段中的某些字符同时保持插入符号位置的人:记住也将 [0] 应用于您的“setSelectionRange”。
    【解决方案2】:

    从jQuery 1.6版本开始,可以使用.prop()方法:

    获取:

    // always start at 0
    
    var start = $('#myarea').prop('selectionStart');
    var end = $('#myarea').prop('selectionEnd');
    

    设置:

    $('#myarea').prop('selectionStart', 10);
    $('#myarea').prop('selectionEnd', 15);
    
    // or short hand by
    
    $('#myarea').prop({
        'selectionStart': 10,
        'selectionEnd': 15
    });
    

    【讨论】:

    • 不想咄咄逼人,但这比原生属性有什么优势呢? O.o 与本机没有任何兼容性问题,我只看到它更长,而且肯定也更慢..
    猜你喜欢
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    • 2022-11-29
    • 2015-01-16
    • 1970-01-01
    • 2010-10-07
    • 2014-08-13
    • 1970-01-01
    相关资源
    最近更新 更多