+7 (987) 026-06-36
Написать в Telegram

Оставить заявку
stanislav_web

Подключение Яндекс Спеллер для исправления орфографических ошибок в русском, украинском или английском тексте

Подключение Яндекс Спеллер для исправления орфографических ошибок в русском, украинском или английском тексте Объясняю и показываю примеры решений разных задач с которыми сталкивался и сталкиваюсь в процессе работы

Подключение Яндекс Спеллер для исправления орфографических ошибок в русском, украинском или английском тексте

Объясняю и показываю примеры решений разных задач с которыми сталкивался и сталкиваюсь в процессе работы

📅 27 сентября 2023

👁‍🗨 740

🔥 0

<script src="https://yastatic.net/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="search">
<script>
	$(document).ready(function () {
		// эта функция получает наш результат проверки орфографии
		fix_spell = function (data) {
			data.forEach(function (elem) {
				// она находит наше поле ввода по имени
				$('#search').val(
					// и меняет всё на правильные слова без ошибок
					$('#search').val().replace(
						elem['word'],
						elem['s'][0] || elem['word']
						)
					);
			});
		}
	});
	// обработчик нажатия на клавиши
	document.addEventListener('keydown', function (e) {
		// если нажат пробел или энтер
		if ((e.keyCode == 32) || (e.keyCode == 13)) {
			// делим текст на строки
			var lines = $('#search').val().replace(/\r\n|\n\r|\n|\r/g, "\n").split("\n");
			// и обрабатываем каждую строчку:
			lines.forEach(function (line) {
				if (line.length) {
					// отправляем строку со словами на проверку в Спеллер, результат сразу отправляется в функцию fix_spell
					$.getScript('https://speller.yandex.net/services/spellservice.json/checkText?text=' + line + '&callback=fix_spell');
				}
			});
		}
	});
</script>

UPD (14.03.2025):

На чистом JavaScript

const searchField = document.getElementById('title-search-input');
let script = null;

window.fix_spell = data => data.forEach(elem => {
  searchField.value = searchField.value.replace(elem.word, elem.s[0] || elem.word);
});

document.addEventListener('keydown', e => {
  if ([32, 13].includes(e.keyCode)) {
    searchField.value.replace(/\r\n|\n\r|\n|\r/g, '\n').split('\n').forEach(line => {
      if (line.length) {
        if (!script) {
          script = document.createElement('script');
          document.body.appendChild(script);
        }
        script.src = `https://speller.yandex.net/services/spellservice.json/checkText?text=${encodeURIComponent(line)}&callback=fix_spell`;
      }
    });
  }
});