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

テキスト入力で選択したテキストを削除しようとしているように見えます。2つの異なるアプローチが必要になります。1つはIE<9用で、もう1つはサポート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 に答える
1

Mozilla (およびその他のブラウザー) は を使用した実装が異なるためdocument.selectionwindow.getSelection()これらのメソッド/プロパティおよびレガシー サポート テーブルに従ってコードを調整する必要があります。これを正規化する多くのライブラリを使用できます。

Webkit で動作するコード例を次に示します。

var selectedStr = '';
if (window.getSelection) {
    var selectedText = window.getSelection().toString()
}
于 2012-12-03T09:58:44.140 に答える
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 に答える
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 に答える
-1
var str = "yourString"
str = str.substring(1,str.length-1)
于 2012-12-03T10:03:23.087 に答える