Обнаружение копирования / вставки в форме HTML в .NET CORE MVC 2.1 - PullRequest
0 голосов
/ 12 декабря 2018

Я работаю над проектом, который уже существовал, когда я прибыл в компанию.

Пользователи должны вставить несколько номеров ISBN из Excel в поле поиска на моей странице индекса (HTML).Они делают это, выбирая множество номеров ISBN из Excel и копируя / вставляя в поле поиска.Проблема в том, что иногда ISBN плохо отформатированы и могут содержать букву или специальный символ в середине (не спрашивайте меня почему, не знаю).

Строка напоминает что-то вроде этого:

3356565663541 3356565663541 3356565663541 3356 B 565663541 3356565663541 A

Код на странице указателя для формы ввода:

<div class="col-lg-4">
  <div class="form-group">
    <label>ISBN</label>
    <input asp-for="Advanced_ISBN" id="ISBN" type="text" placeholder="" class="form-control">
  </div>
</div>

Мне нужен способ проанализировать, что вставлено в текстовое поле, и сообщить пользователю, что что-то не так.

Я бы хотел сделатьчто в C #, если это возможно, но я понятия не имею, как:

  • Обнаружить "вставить в текстовое поле" с помощью ctr-v или щелчком правой кнопкой мыши, мимо;

  • Получить строку для анализа;

  • Показать ее в новом временном окне с выделенным цветом в строке, которая может содержать ошибку.

Пользователи будут нажимать ОК, если все в порядке, или обнаруживают линию, которая является NOK.

1 Ответ

0 голосов
/ 12 декабря 2018

Используйте обработчик событий input .Это сработает при наборе и вставке

jQuery:

$("ISBN").on("input",function() {}); 

обычный JS:

document.getElementById("ISBN").addEventListener("input",function() {}); 

function isValidISBN (isbn) { // from https://neilang.com/articles/how-to-check-if-an-isbn-is-valid-in-javascript/
  isbn = isbn.replace(/[^\dX]/gi, '');
  if(isbn.length != 10){
    return false;
  }
  var chars = isbn.split('');
  if(chars[9].toUpperCase() == 'X'){
    chars[9] = 10;
  }
  var sum = 0;
  for (var i = 0; i < chars.length; i++) {
    sum += ((10-i) * parseInt(chars[i]));
  };
  return ((sum % 11) == 0);
}

document.getElementById("ISBN").addEventListener("input",function() {
  this.value.split(" ").forEach(function(val) {
    if(val.trim()) console.log(val,isValidISBN(val));
  });
});
A valid ISBN would be 0-85131-041-9

<div class="col-lg-4">
  <div class="form-group">
    <label>ISBN</label>
    <input asp-for="Advanced_ISBN" id="ISBN" type="text" placeholder="" class="form-control">
  </div>
</div>

Если вы настаиваете на том, чтобы сервер его обрабатывал, сделайте это (здесь jQuery):

$("#ISBN").on("input",function() {
  $.post("yourcsharpprocess",{ data : this.value },function(data) {
    $("#result").html(data);
  });
});
...