2017-01-25 80 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個空格。我只需要一個空間就可以在按鍵上接受。有人可以幫我嗎? –

+0

我已經更新了答案,以便它應該拒絕按鍵,而不是接受它,然後將其刪除。防止按鍵不會阻止人們粘貼空格,您可能希望在焦點丟失(「模糊」)或可能在「更改」上替換多個空格(我的答案的最後一個版本說明了如何做到這一點 - 只需更改'keydown'到'change'併合並事件處理程序+使用我的變體'stripspaces' – Brian

相關問題