Как запретить ввод пробела/пробела в поле ввода пароля | ReactJs

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

Демо CodeSandBox

Код -

import React from "react";
import ReactDOM from "react-dom";
import "./styles.css";
import { Form, Input, Label } from "semantic-ui-react";

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      inputFieldData: {
        pass: {
          val: "",
          error: false
        }
      }
    };
  }

  inputChange = e => {
    // prevent not to enter space charactes in password field while registering
    const re = /^\S*$/;
    let inputFieldData = this.state.inputFieldData;
    const name = e.target.name;
    if (re.test(e.target.value)) {
      inputFieldData[name]["val"] = e.target.value;
      console.info(e.target.value);
    }
    this.setState({ inputFieldData });
  };

  render() {
    const { inputFieldData } = this.state;

    return (
      <div className = "App">
        <h1>Input box does not contain space in it</h1>
        <h3>Input Value: {inputFieldData["pass"]["val"]}</h3>
        <Form className = "register-form">
          <Form.Field>
            <Input
              type = "password"
              icon = "user circle"
              name = "pass"
              iconPosition = "left"
              placeholder = "Enter Password"
              onChange = {this.inputChange}
              error = {inputFieldData["pass"]["error"]}
            />
            {inputFieldData["pass"]["error"] && (
              <Label basic color = "red" pointing>
                Field can not be empty
              </Label>
            )}
          </Form.Field>
        </Form>
      </div>
    );
  }
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

пусть пользователи вводят свой пароль. Затем вы можете trim(password) перед вызовом API

Vu Luu 06.03.2019 08:33

Вы можете просто обнаружить пробел, см. это

Tushar Walzade 06.03.2019 08:35

Я знаю, но я не хочу использовать trim(). Я хочу не вводить символ пробела в поле ввода. @Вулуу

Shubham Baranwal 06.03.2019 08:36

Я попробовал ваш метод, прежде чем задавать этот вопрос, но он мне не помог. @TusharWalzade

Shubham Baranwal 06.03.2019 08:37
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
9 604
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Вам нужно установить значение ввода на inputFieldData.pass.val,
в противном случае это не привязан к состоянию вашего компонента.

        <Input
          value = {inputFieldData.pass.val}
          type = "password"
          icon = "user circle"
          name = "pass"
          iconPosition = "left"
          placeholder = "Enter Password"
          onChange = {this.inputChange}
          error = {inputFieldData["pass"]["error"]}
        />

Вам нужно использовать шаблон контролируемого компонента (см. здесь https://reactjs.org/docs/forms.html#управляемые-компоненты), добавив свойство value к вашему компоненту input.

Затем вы можете добавить логику обрезки пробелов в свою функцию handleChangeEvent.

Вот пример: https://codesandbox.io/s/kkpr53k36r

Просто сделайте так в функции handleOnChange:

 handleOnChange = (e) => {
    this.setState({
      [e.target.name]: e.target.value.split(" ").join("")
    });
  };

Я решил эту проблему с регулярным выражением

str.replace(/\s/g, '')

Это работает частично, но он также должен установить значение в полях ввода, так как компонент без значения работает как неуправляемый и у него будет свое состояние.

tmh 19.07.2021 08:26

Другие вопросы по теме