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

У меня есть форма для сбора данных и одно поле ввода текста для номеров отслеживания.Я использую сканер штрих-кода для сканирования отгрузочных этикеток как простой способ получения номера для отслеживания.Затем я вставляю число в это поле.Однако этот конкретный тип метки доставки от FedEx добавляет номер формы в конец номера отслеживания.

Есть ли способ использовать JavaScript или JQuery для проверки ввода сразу после его вставкии удалить последние четыре символа, если они равны '0663'?Может ли кто-нибудь предоставить образец, если это возможно?

Ответы [ 3 ]

0 голосов
/ 17 октября 2018

Вот рабочее решение.Просто запустите фрагмент кода ниже.

Протестировано в Chrome.Может потребовать, чтобы некоторые комментарии были откомментированы в других браузерах.

const input = document.getElementById('fred');

const removeEnd = (value) => {
  console.log('value', value);
  if (value.match('0663$')) {
    const newValue = value.slice(0, -4);
    input.value = newValue;
  }
}

input.onkeyup = (evt) => {
  removeEnd(evt.target.value);
}
input.onpaste = (evt) => {
  // might be needed
  // removeEnd(evt.target.value);
}
input.oninput = (evt) => {
  // might be needed
  // removeEnd(evt.target.value);
}
<input id="fred">
0 голосов
/ 17 октября 2018

В следующей демонстрационной версии используются:

  • HTMLFormControlsCollection для доступа к тегам <form>, <input> и <output>.
  • oninput событие для вызова функции обратного вызова: lastFour().Событие input происходит, когда зарегистрированный тег <input> получает любые данные, введенные пользователем.
  • substring() и slice() для манипуляции со строковым значением

// Reference the <form>
var shp = document.forms[0].elements;
// Reference the <input>
var trk = shp.trackingNumber;

// Assign event handler for input event
trk.oninput = lastFour;

// Callback function
function lastFour(e) {
  /*
  Get the value of the tag that the input event 
  occurred on (i.e. <input>)
  */
  var num = e.target.value;

  /*
  if the last 4 chars equals '0663'... [?]
  ...extract the chars from num at start(0) 
  to the fourth to the last(-4 excluded)...[:]
  ...otherwise leave num alone
  */
  var mod = (num.substring(num.length - 4) === '0663') ? num.slice(0, -4) : num;

  // Set the value of <output> to the new value mod
  shp.labelScan.value = mod;
}
<form id='shipping'>
  <label for='trackingNumber'>Tracking Number:
  <input id='trackingNumber' type='number' min='100000000000' max='9999999999999999'> 12 to 16 digits</label><br>
  <output id='labelScan'></output>
</form>
0 голосов
/ 17 октября 2018

Здесь:

let code = '123412341234123412340663';
console.log(code.substring(0,code.length-4));
...