2017-01-25 5 views
0
function stripspaces(input) 
{ 
    input.value = input.value.replace(/\s+/gi," "); 

} 

この機能を記述しました。それは動作していますが、私はマウスポインターを指すとき、または単語と宇宙を与えている間に左矢印で動いているとき、それは最後にジャンプしています。誰も私に解決策を与えることができますか?は、単語の間に複数のスペースを使用できません。

+0

jsfiddleを作成できますか? – AnthonyB

+0

いいえわからないJsfiddle @JaydipJ –

答えて

0

e.preventingDefaultを入力して入力を防止することができます。スペースキーが押されたかどうかを簡単にテストし、カーソルの両側にスペースがある場合は入力を防ぎます。

document.addEventListener('DOMContentLoaded', function() { 
 
    
 
    var input = document.getElementById('myInput'); 
 
    input.addEventListener('keydown', function(e){  
 
     var input = e.target; 
 
     var val = input.value; 
 
     var end = input.selectionEnd; 
 
     if(e.keyCode == 32 && (val[end - 1] == " " || val[end] == " ")) { 
 
     e.preventDefault(); 
 
     return false; 
 
     }  
 
    }); 
 
});
<input type="text" id="myInput">

これはまだそれが二重のスペースをボックスにペーストを妨げないという問題があります。したがって、入力が複数の連続した空白を含んでいないことを確実にするために、複数のスペースをフォーカス損失に置き換える価値があります。

+0

2つのスペースを受け入れています。 keypressで受け入れるスペースは1つだけ必要です。誰かが私を助けることができますか? –

+0

私は答えを更新し、それを受け入れてから削除するのではなく、キーの押下を拒否するようにしました。キーを押すことで人がスペースを貼り付けるのを防ぐことはできません。複数のスペースをフォーカスロス( 'blur')や' change'に置き換えることもできます(私の答えの最後のリビジョンは、 'keydown'を使ってイベントハンドラを'変更してマージする '+ 'stripspaces'の私の変種を使用する – Brian

関連する問題