Проверка input на английские символы

Простая отправка формы ajax, но я никак не могу прикрутить проверку на символы. Я хочу проверить, чтобы input не был пустым и был заполнен только русскими символами - и только в этом случае отправлять письмо.

<input type="text" 
       name="name" 
       id="contname" value="" 
       placeholder="Контактное лицо" />
function AjaxFormRequest1(evt, result_id, formf, url) {
  console.log("Event type: ", evt.type);
  evt.preventDefault();
  jQuery.ajax({
    url: url,
    type: "POST",
    dataType: "html",
    data: jQuery("#" + formf).serialize(),
    success: function(response) {},
    error: function(response) {}
  });
  $(':input', '#formf')
    .not(':button, :submit, :reset, :hidden')
    .val('')
}

Я пробовал этот код, но он работает только при вводе руками, а если робот вводит - то не работает.

$('#сontname').on('input', function() {
  let uName1_testA = /[^a-zA-Z]/g.test(uName1);
  if (uName1_testA === true) {
    $('#uNameMessageID').text("error")
  } else if (uName1_testA === false) {
    $('#uNameMessageID').text('');
  }
});

Ответы (1 шт):

Автор решения: ksa

а если робот вводит - то не работает.

Можно использовать переопределение сеттера и геттера, свойства value у нужного элемента input...

(o => {
  const desc = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, "value");
  Object.defineProperty(o, "value", {
      get: desc.get,
      set(v) {
          console.log("Записали значение", v)
          desc.set.call(this, v)
      }
  })
})(contname);
contname.addEventListener('input', e => {
  console.log("Ввели значение", e.target.value)
})

test.addEventListener('click', _ => {
  contname.value = Math.floor(Math.random() * 100)
})
<input type="text" name="name" id="contname" value=""  placeholder="Контактное лицо" />
<button id='test'>Запись данных скриптом</button>

→ Ссылка