8

Hai Guys, I want to set cursor at a position of length 14 on a textbox which will not have a value.. Iknow initially cursor will be at 0 i want it to be at 14

ACP
  • 34,682
  • 100
  • 231
  • 371

3 Answers3

20

IE use different approach at setting cursor position than Firefox,Opera and Chrome. It's better to make a helper function, which will do it for you. I use this one for own needs.

function setCursor(node,pos){

    node = (typeof node == "string" || node instanceof String) ? document.getElementById(node) : node;

    if(!node){
        return false;
    }else if(node.createTextRange){
        var textRange = node.createTextRange();
        textRange.collapse(true);
        textRange.moveEnd(pos);
        textRange.moveStart(pos);
        textRange.select();
        return true;
    }else if(node.setSelectionRange){
        node.setSelectionRange(pos,pos);
        return true;
    }

    return false;
}

Last thing, is to call it from your onfocus handler.

Goodluck

nemisj
  • 11,562
  • 2
  • 25
  • 23
  • Hai What is node is it textboxId – ACP Dec 09 '09 at 03:28
  • node is the DOM instance, but if you need to work with id's, you can add extra "codeline" which will fetch DOM instance for you. – nemisj Dec 09 '09 at 09:07
  • As DSharma suggested (rolled back the edit, it should have been a comment): In order to make it work for all browsers add timeout to the function call if you want to place the cursor at the beginning of the input text. For Example: `window.setTimeout(function() { setCursor(node,0);}, 1);` – thomaux Jan 10 '14 at 13:25
  • 1
    The 'var' before node is redundant since it's already a function parameter. Great function though. – Codesmith Mar 27 '14 at 01:22
2

The moveStart and moveEnd methods expects 2 parameters. The first parameter is a string (character, word, sentence or textedit). The second parameter is an integer and refers to the number of units to move. http://msdn.microsoft.com/en-us/library/ie/ms536623%28v=vs.85%29.aspx

Erick
  • 21
  • 1
0

$("#textbox").selectionStart=14 might works for Firefox, Opera, Chrome, but not sure for IE

PS: There should be length 14 > characters already in textbox to work properly.

YOU
  • 120,166
  • 34
  • 186
  • 219
  • Mark the textbox will be empty is there any solution – ACP Dec 08 '09 at 08:58
  • Yeah, Its for input box and textarea, If yours is Rich Text Box, I am not sure with it then. sorry about that. – YOU Dec 08 '09 at 09:02