Javascript 光标位置异常位于Chrome中输入值的末尾

Javascript 光标位置异常位于Chrome中输入值的末尾,javascript,jquery,google-chrome,Javascript,Jquery,Google Chrome,我编写了一个jQuery函数,在将文本写入输入框时自动删除单引号和双引号。在firefox中,一切都很顺利,但在Chrome中,若你们想在文本的开头添加一些内容,那个是不允许的。因为光标始终位于输入值的末尾。我不知道该怎么修。这是我的密码: $.fn.removeQuotes = function() { var elem = $(this); elem.bind("focus propertychange change click keyup input paste", fun

我编写了一个jQuery函数,在将文本写入输入框时自动删除单引号和双引号。在firefox中,一切都很顺利,但在Chrome中,若你们想在文本的开头添加一些内容,那个是不允许的。因为光标始终位于输入值的末尾。我不知道该怎么修。这是我的密码:

$.fn.removeQuotes = function()
{
    var elem = $(this);
    elem.bind("focus propertychange change click keyup input paste", function(event)
    {
        setTimeout(function ()
        {
            elem.val(elem.val().replace(/['"]/g, ""));
        }, 1);
   });
};
编辑:在评论之后,我尝试了以下方法:

$.fn.removeQuotes = function()
{
    var elem = $(this);
    elem.bind("focus propertychange change click keyup input paste", function(event)
    {
        // store current positions in variables
        var start = this.selectionStart,
        end = this.selectionEnd;
        setTimeout(function ()
        {
            elem.val(elem.val().replace(/['"]/g, ""));
        }, 1);
       // restore from variables...
       this.setSelectionRange(start, end);
   });
};

但一切都没有改变。

这里有一个粗略的版本供您构建-


$.fn.removeQuotes=函数()
{
var elem=$(本);
元素绑定(“键控”,函数(事件)
{
var start=elem.caret();
console.log(启动);
elem.val(elem.val().replace(/['”]/g,”);
setCaretPosition(“文本框”,开始);
});
};
函数设置CaretPosition(elemId、caretPos){
var elem=document.getElementById(elemId);
if(elem!=null){
if(元素createTextRange){
var range=elem.createTextRange();
range.move('character',caretPos);
range.select();
}
否则{
如果(元素选择开始){
元素焦点();
元素设置选择范围(caretPos,caretPos);
}
其他的
元素焦点();
}
}
}
$(文档).ready(函数(){
$(“#文本框”).removeQuotes();
});

Duplicate:我认为上述解决方案可能是正确的。您能确认这就是您所说的吗?
    <div>
      <input id="text-box" type="text">
    </div>

$.fn.removeQuotes = function()
{
    var elem = $(this);
    elem.bind("keyup", function(event)
    {
                var start = elem.caret();
            console.log(start);
            elem.val(elem.val().replace(/['"]/g, ""));
            setCaretPosition('text-box',start);
   });
};

function setCaretPosition(elemId, caretPos) {
    var elem = document.getElementById(elemId);

    if(elem != null) {
        if(elem.createTextRange) {
            var range = elem.createTextRange();
            range.move('character', caretPos);
            range.select();
        }
        else {
            if(elem.selectionStart) {
                elem.focus();
                elem.setSelectionRange(caretPos, caretPos);
            }
            else
                elem.focus();
        }
    }
}

$(document).ready(function(){
    $("#text-box").removeQuotes();
});