在Chrome中,光标位置异常地位于输入值的末尾
Cursor position abnormally situated at the end of the input value in Chrome
我编写了一个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);
});
};
但一切都没有改变。
这里有一个粗略的版本供您构建-https://jsfiddle.net/Sanjeevi/79gun3g0/1/
<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();
});
相关文章:
- 删除输入中输入的符号
- 我确实有一个表单,如果用户输入了输入,它应该检查否定或空的输入框,并抛出一条警告消息
- 如何在输入总和输入时显示基于总和的结果
- 专注于输入角度不起作用
- 专注于输入谷歌搜索
- JavaScript onfocus/onblur 特定于输入 - 不起作用
- 如何在页面加载时专注于输入框
- 在backbonejs视图中,keypress/keyup/keydown事件是否仅适用于输入,而不适用于其他元素
- 相对于输入的绝对定位[类型=范围]
- 使标记的行为类似于输入按钮
- 如何获得文本框值?它存在于输入标签中,但不存在于文本框中
- 保持建议框相对于输入字段
- 灯箱专注于输入,只在刷新后工作
- 自动将JSON对象中的值应用于输入标记
- 以相互对应的多重输入于秘银
- VueJs:在v-repeat指令中使用v-el指令专注于输入
- Javascript调用多个SELECT字段,类似于输入类型的inputBoxes[i]
- jQuery:填充聚焦于输入的自动完成
- 单击并使用CTRL键专注于输入
- 如何使用jQuery将正则表达式应用于输入