Jquery - 如果光标位置位于文本字段的开始/结束处

发布于 2024-09-27 09:27:13 字数 92 浏览 5 评论 0原文

我有一个文本区域,我想检查光标是在开头还是在结尾(我不需要当前位置)。
有人知道一个简单的 jQuery 解决方案吗?

预先感谢!
彼得

i have a textarea and I want to check if the cursor is at the start or at the end (I dont need the current position).
Did anybody know a simple jQuery solution?

Thanks in advance!
Peter

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

转身泪倾城 2024-10-04 09:27:13

假设您指的是 而不是 textarea,这是一个非 jQuery 解决方案(您仍然可以与 jQuery 代码一起使用)。几乎可以肯定,它的代码量会比 jQuery 插件少。

更新2011年11月12日

话虽如此,我已经开发了一个jQuery插件对于他这种任务来说,它确实比下面的代码要大。

var textInput = document.getElementById("your_id"), val = textInput.value;
var isAtStart = false, isAtEnd = false;
if (typeof textInput.selectionStart == "number") {
    // Non-IE browsers
    isAtStart = (textInput.selectionStart == 0);
    isAtEnd = (textInput.selectionEnd == val.length);
} else if (document.selection && document.selection.createRange) {
    // IE <= 8 branch
    textInput.focus();
    var selRange = document.selection.createRange();
    var inputRange = textInput.createTextRange();
    var inputSelRange = inputRange.duplicate();
    inputSelRange.moveToBookmark(selRange.getBookmark());
    isAtStart = inputSelRange.compareEndPoints("StartToStart", inputRange) == 0;
    isAtEnd = inputSelRange.compareEndPoints("EndToEnd", inputRange) == 0;
}

alert("At start: " + isAtStart + ", at end: " + isAtEnd);

Assuming you mean a <input type="text"> rather than a textarea, here's a non-jQuery solution (that you can still use with your jQuery code). It will almost certainly be less code than a jQuery plug-in.

UPDATE 12 November 2011

Having said that, I have developed a jQuery plug-in for just his kind of task, and it is indeed bigger than the code below.

var textInput = document.getElementById("your_id"), val = textInput.value;
var isAtStart = false, isAtEnd = false;
if (typeof textInput.selectionStart == "number") {
    // Non-IE browsers
    isAtStart = (textInput.selectionStart == 0);
    isAtEnd = (textInput.selectionEnd == val.length);
} else if (document.selection && document.selection.createRange) {
    // IE <= 8 branch
    textInput.focus();
    var selRange = document.selection.createRange();
    var inputRange = textInput.createTextRange();
    var inputSelRange = inputRange.duplicate();
    inputSelRange.moveToBookmark(selRange.getBookmark());
    isAtStart = inputSelRange.compareEndPoints("StartToStart", inputRange) == 0;
    isAtEnd = inputSelRange.compareEndPoints("EndToEnd", inputRange) == 0;
}

alert("At start: " + isAtStart + ", at end: " + isAtEnd);
小帐篷 2024-10-04 09:27:13

是的,使用这个很棒的 jQuery 插件

需要更多信息吗?带着更多问题回到这里:)

更新
与该插件相关的原始博客文章已关闭。

感谢回程机的强大功能,您仍然可以查看它。

http://web.archive .org/web/20080620163228/http://blog.0xab.cd/jquery-plugin---fieldselection

天哪,我喜欢那个网站。

Yep, use this awesome jQuery plugin.

Need more info? Come back here with more questions :)

Update
The original blog post associated with the plugin is down.

Thanks to the Awesome Power of the wayback machine, you can still view it.

http://web.archive.org/web/20080620163228/http://blog.0xab.cd/jquery-plugin---fieldselection

God I love that website.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文