Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery在主键中设置光标_Javascript_Jquery - Fatal编程技术网

Javascript jQuery在主键中设置光标

Javascript jQuery在主键中设置光标,javascript,jquery,Javascript,Jquery,我想在字段append/中键入两个数字后,将光标设置在home中 我家的意思是,home键盘上的键: 我尝试:(在我的代码中,运行Home键,添加$) ​ $(“.num”).keypress(函数(e){ var val=该值; var value=val+String.fromCharCode('36'); (val.length=='2')?$(this.val(value+'/'):''; });​ 演示: 如何操作?当在输入中输入2时,我们可以附加/,并使用以下内容转到输入字段的

我想在字段append
/
中键入两个数字后,将光标设置在home中

我家的意思是,
home
键盘上的键:

我尝试:(在我的代码中,运行Home键,添加
$


​
$(“.num”).keypress(函数(e){
var val=该值;
var value=val+String.fromCharCode('36');
(val.length=='2')?$(this.val(value+'/'):'';
});​
演示:


如何操作?

当在输入中输入
2
时,我们可以附加
/
,并使用以下内容转到输入字段的开头(左侧): 我没有使用
Home
键——您希望如何处理它(如果您的意思是将光标放在输入字段的开头,请查看)?但是,使用
按键
事件
2
2/
设置为
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);
    }
});​
演示:

试试这个:

js:


你想做的对我来说不是很干净。在你的提琴中什么有用?对我来说,它只是在我键入两个字符后添加$/而已,你想添加/并将光标放在字符串的开头吗?如果你的输入类型是maxlengthis 2,你怎么能附加“/”。@eicto,是的,我想要这个。怎么样?@mohan.gade:您可以覆盖
maxlength
。否。我想添加
/
,并将光标放在字符串的开头。@TaylorGomez现在我明白了。我已经更新了我的答案和JSFIDLE。这就是你想要的,对吗?不,我想要的是:(在这个字段中,你只需要输入数字)。但它是大型代码,如何作为速记编码来完成?你所说的“它是如何总结的”是什么意思?关于大型代码。。。在
keyup
处理程序中,所有我的代码和修复的代码、GetCaretPosition和setCaretPosition都是第三方代码
$(".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);
    }
});​
//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;
        }
    }
});​