簡體   English   中英

防止單詞之間超過一個空格

[英]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 的要求,必須...

  1. 以某種方式調整返回條件,以考慮是否使用當前擊鍵創建空白序列。
  2. 因此,必須實現一種方法來准確確定這一點。
  3. 也可能有一些可能的輔助方法。
  4. 代碼示例...

 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM