Удалить специальные символы из поля ввода - PullRequest
0 голосов
/ 18 сентября 2018

Я искал везде, но не смог найти именно то, что искал.

У меня есть HTML-форма, заполненная адресами Mac из нашего инвентаря, поэтому строки, введенные в поле ввода, будут выглядеть следующим образом:

A1: A2: A3: A4: A5: A6

Я пытаюсь написать скрипт для удаления символа : и любых пробелов в любом месте. Таким образом, когда он будет введен, результат будет:

A1A2A3A4A5A6

Это то, что я имею до сих пор:

<input type="text" id="macaddress" onChange="removeChar();WriteLog();" />

Тогда в моем сценарии у меня есть:

function removeChar() {
  var a = document.getElementById("macaddress").value;
  a = a.replace(/: /g, '');
  document.getElementById.innerHTML = a;
}

Я не получаю никаких ошибок JavaScript с этим, но ничего не происходит.

У меня также есть другой скрипт, который переносит значение поля в рабочий журнал, который является другой функцией WriteLog().

По сути, я хочу удалить :, а затем добавить новое значение в журнал с помощью второй функции.

Ответы [ 5 ]

0 голосов
/ 18 сентября 2018

Ваше регулярное выражение ищет «двоеточие, за которым следует пробел».

Если вы добавите трубу между ними: /:| /, тогда он будет искать все двоеточия и / илипробелы в любом порядке.

Демо:

function removeChar() {
  var a = document.getElementById("macaddress").value;
  a = a.replace(/:| /g, '');
  document.getElementById("result").innerHTML = a;
}
<input type="text" id="macaddress" onChange="removeChar();" />
<div id="result"></div>
0 голосов
/ 18 сентября 2018

HTML

<input type="text" id="macaddress"/>
<button onclick="removeChar()">Click me!</button>

JS

function removeChar() {
    var a = document.getElementById("macaddress").value.trim();
    a = a.split('');
    a.forEach(function (character, index) {
        if (character === ':') {
            a.splice(index, 1);
        }
    });
    a = a.join('');
    document.getElementById("macaddress").value  = a;
}
0 голосов
/ 18 сентября 2018

Если вы хотите сохранить только цифры и буквы, вы можете использовать это

a.replace(/[^a-zA-Z0-9]/g, '');

, которое в основном заменяет все, что не z или AZ или 0-9, пустой строкой.

Отличный инструмент для объяснения регулярных выражений и проверки его: Regex101

И эту строку document.getElementById.innerHTML = a; также следует исправить, вы, вероятно, имели в виду что-то вроде document.getElementById('some-elements-id').innerHTML = a;

0 голосов
/ 18 сентября 2018

для удаления двоеточий и пробелов из строки просто используйте

str = str.replace(/[:\s]/g, '');
0 голосов
/ 18 сентября 2018

В спецификации вопроса сказано, что вы хотите удалить : и : с пробелом.Сделайте пространство в регулярном выражении необязательным:

a = a.replace(/:( )?/g, '');

Но вам также необходимо учесть предыдущие пробелы:

a = a.replace(/( )?:( )?/g, '');

Я бытакже обрежьте начальную строку (Хорошая практика)

a = a.trim().replace(/( )?:( )?/g, '');

Наконец, я не уверен, что делает эта строка: document.getElementById.innerHTML = a;, но эта строка выдаст ошибку.Убери это.

...