Search code examples
javascriptjquerytextareaselectiontextselection

Jquery - If cursor position at the start/end in a textfield


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


Solution

  • 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);