Отмена пользовательского ввода определенных символов c в элемент ввода с использованием RxJS - PullRequest
1 голос
/ 14 июля 2020

Мне было интересно, как запретить пользователю вводить пробелы в элемент ввода.

Вот что я получил до сих пор:

const userTypedInSearchBox = Observable.fromEvent(searchBar, 'input').asHot();

whenAnyOf(userTypedInSearchBox).subscribe(e => {
    if(e.keyCode === 32) {
        e.preventDefault()
    }
});

1 Ответ

2 голосов
/ 14 июля 2020

Stackblitz

Вот один способ, вы могли бы этого добиться. Я думаю, что проблема, с которой вы столкнулись, связана с типом события, которое вы слушаете.

import { Observable, fromEvent } from 'rxjs'; 
import { map } from 'rxjs/operators';

var searchBar = document.querySelector('input');
const userTypedInSearchBox = fromEvent(searchBar, 'keydown');

userTypedInSearchBox.subscribe((e: KeyboardEvent) => {
    if(e.keyCode === 32) {
      console.log(e);
        e.preventDefault();
        e.stopPropagation();
    }
});
...