Мелкий и JS? Тут какая-то ошибка
Заставить меня писать что-то на js можно только на работе и при недоступности обоих коллег-фронтендщиков.
Дёргать сервер стоит только на onsubmit. Или если задача так диктует - то можно и по таймеру, но только сохраняя в локальную переменную предыдущий запрос и дёргать сервер повторно только если в инпуте введено что-то отличающееся от локальной переменной.