2012-12-07 55 views
0

我想要在類型2中的數字在字段中追加/並將光標置於首頁。jQuery設置光標在主鍵中

我家的意思是,在鍵盤上Home鍵: http://www.barcodeman.com/altek/mule/kbemulator/keypics/key.home.up.png

我試着爲:(在我的代碼,而不是運行Home鍵這將$

<input type="text" class="num" maxlength="2"/> 
​ 
$(".num").keypress(function(e){ 
    var val = this.value; 
    var value = val + String.fromCharCode('36'); 
    (val.length == '2') ? $(this).val(value+'/') : ''; 
});​ 

DEMO:http://jsfiddle.net/3ePxg/

該怎麼辦?

+0

它不是很乾淨你知道你想要達到什麼目標嗎?你的小提琴有什麼作用? –

+0

對我來說,它只是在我輸入兩個字符後添加$ /,你想添加/並將光標放到字符串的開頭? –

+0

如果你的輸入類型maxlengthis爲2,你怎麼能追加「/」。 –

回答

0

2輸入輸入,我們可以追加/,去年初(左側)輸入字段與此: 我不遵循Home關鍵 - 你想這樣的事情發生了什麼(如果你的意思是把光標放在輸入字段的開頭看this)?然而,隨着2keypress事件是2/我們可以這樣做:

$(".num").on('keypress', function(e){ 
    if (e.keyCode == 50) { 
     var input = $(e.target); 
     input.val(input.val() + '2/'); 
     input.focus(); 
     e.target.setSelectionRange(0,0); 
    } 
});​ 

演示:jsfiddle

+0

不。我想添加'/'並將光標放在字符串的開頭。 –

+0

@TaylorGomez現在我明白了。我更新了我的答案和jsfiddle。那你想要什麼,對吧? – Cymen

+0

不,我想要的:http://jsfiddle.net/wgLhy/4/(在這個領域你只是把數字)。但它是大碼,怎麼可以做成簡寫碼呢? –

0

試試這個:

JS:

//based on script from here: http://stackoverflow.com/a/4085357/815386 -> http://blog.vishalon.net/index.php/javascript-getting-and-setting-caret-position-in-textarea 
function setCaretPosition(ctrl, pos) { 
    if (ctrl.setSelectionRange) { 
        ctrl.focus(); 
        ctrl.setSelectionRange(pos, pos); 
    } 
    else if (ctrl.createTextRange) { 
        var range = ctrl.createTextRange(); 
        range.collapse(true); 
        range.moveEnd('character', pos); 
        range.moveStart('character', pos); 
        range.select(); 
    } 
} 

function GetCaretPosition(ctrl) { 
    var CaretPos = 0; // IE Support 
    if (document.selection) { 
        ctrl.focus(); 
        var Sel = document.selection.createRange(); 
        Sel.moveStart('character', -ctrl.value.length); 
        CaretPos = Sel.text.length; 
    } 
    // Firefox support 
    else if (ctrl.selectionStart || ctrl.selectionStart == '0') CaretPos = ctrl.selectionStart; 
    return (CaretPos); 
} 

$(".num").keyup(function(e) { 
    var val = this.value; 
    if (val.length >= '2') { 
        var value = val.substr(0, 2); 
        var pos=GetCaretPosition(this); 
        $(this).val(value + '/'); 
        setCaretPosition(this, pos); 
        console.log(GetCaretPosition(this)); 
        if (pos >= 2) { 
            setCaretPosition(this, 0); 
            return false; 
        } 
    } 
});​ 

DEMO

+0

已使用大碼。它是如何總結的? –

+0

「你是怎麼總結的?」 ?關於大代碼...我所有的代碼和固定在'keyup'處理程序中,GetCaretPosition和setCaretPosition是第三方代碼 –