React использует другое значение поля ввода, чем показано

Я использую интернационализацию числового формата для поля ввода. например, мое поле ввода будет принимать входные значения как 12,555,8, но когда я отправляю форму, я хочу использовать значение 12555,8 без запятой.

Я использую библиотечный формат response-number, который заботится об обоих форматах. Мой вопрос: как я могу добавить номер 12555.8 без запятой в поле ввода, чтобы при отправке формы я мог использовать это значение?

<NumberFormat  
                    thousandSeparator = {this.props.thousandSeparator}
                    decimalSeparator = {this.props.decimalSeparator}
                    value = {this.state.formattedValue}
                    valOriginal = {this.modifiedInputValue}
                    onKeyUp = {(event) => {this.onKeyUpFormatted(event)}}
                    onValueChange = {(values) => {
                        const {formattedValue, floatValue} = values;
                        this.modifiedInputValue = isNaN(floatValue)?'':floatValue;
                        this.setState({formattedValue});
                    }}
                />

Я пробовал этот код, и при отправке формы попытался захватить неформатированное значение, например следующее

event.target.elements.valOriginal

Не могли бы вы показать свой код и то, что вы пробовали до сих пор?

Tholle 30.06.2018 18:39

Вы читали документы? Я думаю, что это так, примеры есть.

samet 30.06.2018 18:42

Добавлен фрагмент кода, который я пробовал

Vrishank 30.06.2018 18:53

Разве вам не стоит делать setState(floatValue)?

Colin Ricardo 30.06.2018 19:33

Я хочу отображать форматированное значение как значение в поле ввода, но при использовании в коде мне нужен простой номер

Vrishank 30.06.2018 19:44
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
2
5
861
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

I am using library react-number-format which is taking care of both the formats. My question is how can I attach the 12555.8 number without comma to input field so that when I submit form, I can use that value?

Вы НЕ хотите добавлять значение 12555.8 без запятой в поле ввода. Каждый раз, когда вы изменяете «значение» поля ввода, вы будете изменять то, что отображается для пользователя.

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

Итак, в вашей форме вам понадобится обработчик onSubmit, а в вашем компоненте реакции вы определите:

onSubmitHandler = (formData) => {
  let cleanFormData = {...formData}
  cleanFormData.myNumberInput = cleaningFunction(cleanFormData.myNumberInput)
  //submit cleanFormData to server
}
Ответ принят как подходящий

Я добавил свойство как элемент data-valOriginal для React. После этого мы можем получить доступ к этому значению как element.dataset.valOriginal во время события формы отправки.

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