>

입력 필드는 입력 상자가 아니라 입력 필드이며 그 안에 새 줄을 만들 수 없다는 상속 된 사실은 내가 원하는 것입니다.

앱을 속이는 중입니다.

Jon Dumb이 ctrl-V의 텍스트에 줄 바꾸기가 포함 된 텍스트 (또는 규칙보다 다른 내용이있는 경우)가 업데이트 이벤트를 트리거하지 않고 !== '' 에 빠지는 것을 방지하는 방법  사례?

규칙 :

const validator = /^(?!.*\.\.)(?!.*\-\-)(?!.*\.$)[^\W\_][A-Z0-9\.\-\_]{0,50}$/igm;
 const allow = validator.test(inputValue);
 if (allow) {
 ...do stuff
 }

이것을 시도했습니다 (유효성 검사기 위에 위치) :

const inputValue = event.target.value.replace(/\n/g, '').toUpperCase();

여기서 regex-멀티 교체 자바 스크립트에서 줄 바꿈

하지만 inputValue 을 통과 한 후에도 여전히 === '' 가 아니 었습니다.  (그리고 유효한대로) UpdateInput 코드가 여전히 실행되었습니다.

콘텐츠로 실행하면 제대로 표시 될 수 있습니다.

그러나 결과는 사용자가 자신의 입력이 업데이트되고 있지만 내용이 비어 있다는 시각적 피드백을 얻는다는 것입니다. (분명히. 그러나 나는 누가 여기에 개입했는지와 우리가 MY_INPUT\n 에서 어떻게 왔는지 말할 수 없습니다  ~ ===>  (실제로 나는 왜 그렇게하는지 궁금합니다)).

아마도 이것은 이미 잘못된 입력을 필터링하는 반응이지만 코드의 실행을 막는 방법이 필요합니다.

그러나 사용자 입력을 "수정"했음에도 불구하고

명확하게 :

이것은 CTRL-V 시나리오에만 해당됩니다. 입력 키는 의도 한대로 입력을 입력 할 때 아무 것도 수행하지 않습니다.

감사합니다!

  • 답변 # 1

    입력 요소는 이미 \n 를 제거해야합니다  모든 텍스트에서.

    MDN에서

    와이즈 비즈

    문제가

    A single-line text field. Line-breaks are automatically removed from the input value.

    를 점검하고 있다는 것  그리고 그것은 실패하고, 아마도 당신은 '' 를 사용해야합니다  방법.

    .trim()

    다음과 같이 단축 될 수 있습니다 : 와이즈 비즈 빈 문자열은 자신의 스타일과 일치하면 거짓입니다.

    if (inputValue.trim() !== '') {}

  • 이전 python - 가져온 기능이 작동하지 않습니다
  • 다음 jasper reports - DataSet에서 처음 6 개 요소 필터링