[英]Prevent more than one space between words
由於數據輸入的持續問題,我有一個功能可以防止人們將數字或任何符號而不是字母 onkeypress 放入文本框中。
<td><input type="text" name="name" onkeypress="return isAlfa(event)"></td>
現在一些工作人員出於未知原因在單詞之間隨機放置了兩個空格。 所以我需要防止他們在單詞之間放置一個以上的空格。 我想在同一個函數中執行此操作,但它一直在中斷。
function isAlfa(evt) {
evt = (evt || window.event);
var charCode = (evt.which || evt.keyCode);
if ((charCode > 32)
&& (charCode < 65 || charCode > 90)
&& (charCode < 97 || charCode > 122)
) {
return false;
}
return true;
}
如何防止他們在單詞之間輸入多個空格?
忽略所有其他有用的建議和評論,並嚴格遵循 OP 的要求,必須...
function isWhiteSpace(char) { return (/\\s/).test(char); } function willCreateWhitespaceSequence(evt) { var willCreateWSS = false; if (isWhiteSpace(evt.key)) { var elmInput = evt.currentTarget; var content = elmInput.value; var posStart = elmInput.selectionStart; var posEnd = elmInput.selectionEnd; willCreateWSS = ( isWhiteSpace(content[posStart - 1] || '') || isWhiteSpace(content[posEnd] || '') ); } return willCreateWSS; } function isAlfa(evt) { evt = (evt || window.event); var charCode = (evt.which || evt.keyCode); return (( (charCode > 32) && (charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122) ) || willCreateWhitespaceSequence(evt)) ? false : true; }
<input type="text" name="name" onkeypress="return isAlfa(event)"/>
此代碼將防止出現多個空格,也就是說,它只允許 1 個空格,並且將防止出現兩個或更多空格。 您可以配置要拒絕的空白空間量。
與其監聽和評估每個按鍵,不如對任何和所有輸入做出反應,然后清理通過 RegExp 輸入的任何內容。
例子:
<input type=text id=myfield />
JS:
document.querySelector('#myfield').addEventListener('input', evt => {
evt.target.value = evt.target.value.replace(/[^a-z\s]/ig, '').replace(/\s{2,}/g, ' ');
});
首先用空替換所有非字母和空格,然后用一個空格替換 2 個或更多空格的序列。
可能會嘗試使用這樣的東西。 在您的keypress
事件中,嘗試使用string
substr
方法檢查最后一個值,如果這給了您一個空格並且當前代碼也是一個空格,則阻止或執行您想要對輸入執行的任何操作。
function checkstuff(event){ if (event.target.value.substr(-1) === ' ' && event.code === 'Space') { console.log('space pressed in sequence'); } }
<input type='text' onkeypress="checkstuff(event)">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.