0

テキスト領域に複数のスペースを入力しないようにするために、キーアップで関数を呼び出し、onCLick以下のコードを記述しています

var val = document.getelemntByID('trmp');
val.value = val .value.replace(/ +(?= )/g,'');

これは Firefox では正常に動作していますが、IE7 では動作していますが、単語を選択して削除すると、テキスト領域のコンテンツ全体が削除されるなど、他の問題が発生します。

4

2 に答える 2

0

バグが発生する可能性があるため、テキストエリアの値を常に書き換えないことをお勧めします。前の文字がスペースの場合、入力スペースを無効にするだけです:

$(function(){
    var $tA=$('#temp');
    $tA.keydown(function(e){
        var cursorPos = getCursorPosition($tA.get(0));
        if(e.which === 32 && cursorPos > 0 && $tA.val()[cursorPos-1] === ' '){
           return false;            
        }
    });
});

getCursorPosition = function(el) {
        var pos = 0;
        // IE Support
        if (document.selection) {
            el.focus();
            var Sel = document.selection.createRange();
            var SelLength = document.selection.createRange().text.length;
            Sel.moveStart('character', -el.value.length);
            pos = Sel.text.length - SelLength;
        }
        // Firefox support
        else if (el.selectionStart || el.selectionStart == '0')
            pos = el.selectionStart;

        return pos;
    }

http://jsfiddle.net/y6unN/2/

于 2012-04-12T09:51:02.680 に答える
0

スペースのみに正規表現を使用します。キーコード条件を追加します。

このフィドルをチェックしてくださいhttp://jsfiddle.net/hikki/FNJmE/

于 2012-04-12T09:52:34.037 に答える