Обрезать пробелы в начале и конце полей формы в React-JsonSchema-Form - PullRequest
0 голосов
/ 09 мая 2019

Я использую response-jsonschema-form 1.2.1 для создания формы, основанной на JsonSchema (v7). Я хочу автоматически обрезать начальные и конечные пробелы в определенных полях ввода текстового поля, когда пользователь нажимает кнопку отправки в форме. Поскольку форма полностью отображается с помощью элемента <Form> модуляact-jsonschema-form, я не знаю, как мне это сделать с помощью кода JavaScript.

Есть ли у реакционной формы jsonschema возможности триммера?

Заранее спасибо!

1 Ответ

0 голосов
/ 13 мая 2019

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

  1. Вы можете определить собственный виджет и использовать uiSchema, чтобы назначить определенные поля для использования этого виджета. Этот виджет может затем обрезать значение перед использованием встроенной функции onChange, чтобы уведомить форму об изменении его значения, см. https://react -jsonschema-form.readthedocs.io / en / latest / advanced-customization / # заказ виджеты-компонента

  2. Вы можете определить свой собственный TextWidget (зарезервированное имя, см. https://github.com/mozilla-services/react-jsonschema-form/blob/master/src/components/widgets/TextWidget.js => https://github.com/mozilla-services/react-jsonschema-form/blob/master/src/components/widgets/BaseInput.js), а затем использовать этот TextWidget для замены всех полей строкового типа:

const myWidgetOverrides = { TextWidget };

render() {
    return (
        <Form schema={schema}
            widgets={this.myWidgetOverrides}
        />
    );
}
  1. Вы можете переопределить функцию проверки внутри нового компонента класса, который расширяет класс React JSONSchema Form:
class TrimmedStringForm extends Form {
    validate(formData, schema) {
        formData = trimAllStrings(formData);
        return super.validate(formData, schema);
    }
}

или определите свою собственную функцию проверки (обратитесь к: https://react -jsonschema-form.readthedocs.io / en / latest / validation / # custom-validation ), чтобы обрезать все / определенные поля строкового типа из formData до того, как они будут переданы в функцию submit.

...