0

テキスト ボックスから空白を削除する簡単な JavaScript コードを作成しました。これは、Firefox で正常に動作しています。IE や Chrome でも動作しますが、少し問題があります。キーボードの左矢印キーを使用してカーソルをテキスト ボックスの左側に移動しようとすると、テキスト ボックスに値を指定した後、右側から最初の文字を横切って停止します。ここに私のコードがあります:

<script>
function fixme(element)
{
    if(element.value != '')
    {
        var val = element.value;
        var pattern = new RegExp('[ ]+', 'g');
        val = val.replace(pattern, '');
        element.value = val;
    }
}
</script>

<input type="text" onkeydown="fixme(this)" onblur="fixme(this)"/>

何か案が?

4

1 に答える 1

0
function fixme(element) {
    if(element.value != '') {
        var val = element.value;
        val = val.replace(/\s/g, '');
        if (val != element.value) element.value = val;
    }
}

<input type="text" onkeyup="fixme(this)" onblur="fixme(this)" />

固定値が入力された値と異なる場合にのみ、テキスト入力の値プロパティを変更するように関数を改良しました。試してみてください。

フィドル

しかし、ユーザーがテキスト入力に空白を入力することを想定していない場合は、単純に入力を禁止することができます:

function nospace(e) {
    e = e || window.event;
    return e.keyCode !== 32;
}

<input type="text" onkeydown="return nospace(event)" onkeyup="fixme(this)" onblur="fixme(this)" />

ユーザーがテキストをテキスト入力に貼り付ける/ドラッグする場合に備えて、以前の関数を保持します。

フィドル

于 2012-08-17T11:56:34.203 に答える