function stripspaces(input)
{
input.value = input.value.replace(/\s+/gi," ");
}
我寫了這個函數。它正在工作,但是當我指向鼠標指針或者在單詞和給出空間之間用左箭頭移動時,它會跳到最後。任何人都可以給我解決方案嗎?應該不允許在單詞之間有多個空格
function stripspaces(input)
{
input.value = input.value.replace(/\s+/gi," ");
}
我寫了這個函數。它正在工作,但是當我指向鼠標指針或者在單詞和給出空間之間用左箭頭移動時,它會跳到最後。任何人都可以給我解決方案嗎?應該不允許在單詞之間有多個空格
您可以通過調用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">
這仍然有問題,它不會阻止膏與雙空格框。所以它可能仍然值得替換聚焦損失上的多個空間,以確保輸入從不包含多個連續的空格。
它接受2個空格。我只需要一個空間就可以在按鍵上接受。有人可以幫我嗎? –
我已經更新了答案,以便它應該拒絕按鍵,而不是接受它,然後將其刪除。防止按鍵不會阻止人們粘貼空格,您可能希望在焦點丟失(「模糊」)或可能在「更改」上替換多個空格(我的答案的最後一個版本說明了如何做到這一點 - 只需更改'keydown'到'change'併合並事件處理程序+使用我的變體'stripspaces' – Brian
你可以創建一個jsfiddle嗎? – AnthonyB
不,我不知道Jsfiddle @JaydipJ –