如何在<input type =“number”/>中移动插入符号?

时间:2015-06-24 04:08:02

标签: javascript jquery html

所以我在点击input时试图让插入符号移动。当input类型为text时,我发现的代码有效。但是当你将它设置为number时 - 它不起作用。另外,如何在不在参数中声明值(即55)的情况下传递长度?

HTML

<input type="number" name="cost" value="0.00" />

的JavaScript

$.fn.setCursorPosition = function (pos) {
    this.each(function (index, elem) {
        if (elem.setSelectionRange) {
            elem.setSelectionRange(pos, pos);
        } else if (elem.createTextRange) {
            var range = elem.createTextRange();
            range.collapse(true);
            range.moveEnd('character', pos);
            range.moveStart('character', pos);
            range.select();
        }
    });
    return this;
};

$('input[name=cost]').click(function() {
    $('input[name=cost]').setCursorPosition(55);
});


修改

做了一些挖掘并发现chrome不允许你用number执行此操作...是否有人知道围绕该浏览器的工作并且不需要切换类型到text

编辑2:
经过大量搜索后,似乎没有解决方法可以使用number类型。我不明白。为什么浏览器制造商会这样做?我发誓我们应该开始制作所有元素伪元素,只是为了惹恼他们。特别是谷歌,这会对那里的搜索算法造成严重破坏

1 个答案:

答案 0 :(得分:1)

尝试在keydown上将输入的type属性更改为text,然后在keyup上更改为number

有点hacky,但会解决问题。