jQuery: получить курсорную позицию текста во входных данных без кода браузера?

Есть ли способ в jQuery получить текущую позицию курсора в текстовом вводе, не делая уродливого кода браузера?

Как в:

 

курсор после «x» «некоторого текста», я могу получить «8»?

    Вы не можете сделать это без какого-либо определенного кода браузера, так как они реализуют выбор текста немного по-другому. Однако есть плагины, которые абстрагируют это. Для того, что вам нужно, есть плагин jQuery Caret (jCaret) .

    Здесь вы можете попробовать демо .

    Чтобы ваш код мог получить позицию, вы могли бы сделать что-то вроде этого:

     $("#myTextInput").bind("keydown keypress mousemove", function() { alert("Current position: " + $(this).caret().start); }); 

    Вы можете проверить его здесь .

    Предупреждение о плагине JQuery Caret.

    Он будет конфликтовать с плагином Masked Input (или наоборот). К счастью, плагин Masked Input включает в себя собственную функцию каретки (), которую вы можете использовать очень похоже на плагин Caret для ваших основных потребностей – $ (element) .caret (). Begin или .end

    Используя синтаксис text_element.selectionStart мы можем получить начальную позицию выбора текста в терминах индекса первого символа выделенного текста в text_element.value и в случае, если мы хотим получить то же самое из последнего символа в выбор мы должны использовать text_element.selectionEnd .

    Используйте его следующим образом:

       

    Я даю вам fiddle_demo

    просто натолкнулся на просмотр, может помочь вам javascript-getting-and-setting-caret-position-in-textarea . Вы также можете использовать его для текстового поля.

    Давайте будем гением компьютера.