Javascript 如何在文本字段中模拟退格操作?
当按下按钮时,我只想在常规文本框中模拟“退格”,删除光标左侧的字符Javascript 如何在文本字段中模拟退格操作?,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,当按下按钮时,我只想在常规文本框中模拟“退格”,删除光标左侧的字符 谷歌和各种论坛在这方面产生了非常随机的结果。正确的方法是什么?纯Javascript实现,onClick var text = document.getElementById(myTxtBox).value; text = text.substr(0,text.length-1); document.getElementById(myTxtBox).value = text; 所以我猜你不是想把焦点放在文本输入上来删除它
谷歌和各种论坛在这方面产生了非常随机的结果。正确的方法是什么?纯Javascript实现,onClick
var text = document.getElementById(myTxtBox).value;
text = text.substr(0,text.length-1);
document.getElementById(myTxtBox).value = text;
所以我猜你不是想把焦点放在文本输入上来删除它 你可以尝试几种方法。首先,获取输入的当前内容并删除最后一个字符,然后将修改后的字符串放回原处。例如(此代码应该有效):
另一种方法是使用js模拟正在命中的退格字符键。您需要关注输入,将光标移动到行的末尾,然后触发字符。这似乎在Safari(可能还有Firefox)中也适用,但我还没有在IE中测试过:
function backspaceAtCursor(id)
{
var field = document.getElementById(id);
if(field.selectionStart)
{
var startPos = field.selectionStart;
var endPos = field.selectionEnd;
if(field.selectionStart == field.selectionEnd)
{
field.value = field.value.substring(0, startPos - 1) + field.value.substring(endPos, field.value.length);
field.focus();
field.setSelectionRange(startPos - 1, startPos - 1);
}
else
{
field.value = field.value.substring(0, startPos) + field.value.substring(endPos, field.value.length);
field.focus();
field.setSelectionRange(startPos, startPos);
}
}
}
使用:
backspacecursor('elementid')
jQuery插件模拟文本字段中的退格,在IE、FF、Chrome中工作(基于中的代码)
这只是删除了文本框中的最后一个字符,并没有删除光标左侧的字符。哎哟,我以为他想模拟退格。这正是他想要做的;-)但是退格不会删除文本框中的最后一个字符,而是删除光标前的字符;-)我不确定这样做是否可行,因为按下按钮时文本字段会失去焦点,所以你怎么知道光标在哪里。除非在打印时跟踪它,这对于大多数情况来说是足够简单的,但是不处理光标放在文本范围中间某处的情况,或者当文本被选中时。当
selectionStart
属性未实现或selectionStart
为零时,将失败<代码>选择每当选择中包含第一个字符时,开始将为零,这意味着无法删除此类选择。这可以通过将检查替换为if(field.hasOwnProperty('selectionStart'))来解决。
function backspaceAtCursor(id)
{
var field = document.getElementById(id);
if(field.selectionStart)
{
var startPos = field.selectionStart;
var endPos = field.selectionEnd;
if(field.selectionStart == field.selectionEnd)
{
field.value = field.value.substring(0, startPos - 1) + field.value.substring(endPos, field.value.length);
field.focus();
field.setSelectionRange(startPos - 1, startPos - 1);
}
else
{
field.value = field.value.substring(0, startPos) + field.value.substring(endPos, field.value.length);
field.focus();
field.setSelectionRange(startPos, startPos);
}
}
}
jQuery.fn.extend({
backspaceAtCaret: function(){
return this.each(function(i) {
if (document.selection)
{
this.focus();
sel = document.selection.createRange();
if(sel.text.length > 0)
{
sel.text="";
}
else
{
sel.moveStart("character",-1);
sel.text="";
}
sel.select();
}
else if (this.selectionStart || this.selectionStart == "0")
{
var startPos = this.selectionStart;
var endPos = this.selectionEnd;
this.value = this.value.substring(0, startPos-1) + this.value.substring(endPos, this.value.length);
this.selectionStart = startPos-1;
this.selectionEnd = startPos-1;
this.focus();
}
else
{
this.value=this.value.substr(0,(this.value.length-1));
this.focus();
}
})
}
});