0

我正在尝试通过以下方式从输入中删除文本,但它在 Mozilla 中不起作用,有人可以帮忙吗?
在 IE 中它工作正常。

var start = txt.selectionStart;
var end = txt.selectionEnd;  
var selectedStr = txt.value.toString().substring(start, end);
txt.value = txt.value.toString().replace(selectedStr, "");
4

5 回答 5

1

Mozilla(和其他浏览器)使用不同的实现document.selectionwindow.getSelection()因此您需要根据这些方法/属性和旧支持表调整您的代码。您可以使用许多库来为您标准化。

这是一个适用于 webkit 的代码示例:

var selectedStr = '';
if (window.getSelection) {
    var selectedText = window.getSelection().toString()
}
于 2012-12-03T09:58:44.140 回答
1

看起来好像您正在尝试删除文本输入中的选定文本。您将需要两种不同的方法:一种用于 IE < 9,另一种用于支持selectionStartselectionEnd属性的其他浏览器。就是这样:

演示:http: //jsfiddle.net/hwG7f/1/

代码:

function deleteSelected(input) {
    input.focus();
    if (typeof input.selectionStart == "number") {
        var start = input.selectionStart,
            end = input.selectionEnd,
            val = input.value;
        if (start != end) {
            input.value = val.slice(0, start) + val.slice(end);
            input.setSelectionRange(start, start);
        }
    } else if (typeof document.selection != "undefined") {
        document.selection.createRange().text = "";
    }
}
于 2012-12-03T12:35:34.847 回答
0

替换值不是解决此问题的正确方法。尝试在选择之前和之后获取字符串块:

var start = txt.selectionStart;
var end = txt.selectionEnd;
txt.value = txt.value.substring(0,start) + txt.value.substring(end);

这是一个演示:http: //jsfiddle.net/BuMUu/1/

于 2012-12-03T10:01:57.067 回答
0

SelectionStart 仅适用于 IE9+。

对不起,但你为什么不直接将它设置为“”。


<input type="text" id="txt" />
<input type="button" value="Clear" id="clear" />​

function clear() {
    var txt = document.getElementById('txt');
    txt.value = "";
}
$('#clear').click(function(){clear()});​
于 2012-12-03T10:12:44.493 回答
-1
var str = "yourString"
str = str.substring(1,str.length-1)
于 2012-12-03T10:03:23.087 回答