从React-JsonSchema-Form的表单字段的开头和结尾修剪空白

时间:2019-05-09 17:05:23

标签: react-jsonschema-forms

我正在使用react-jsonschema-form 1.2.1构建基于JsonSchema(v7)的表单。当用户在表单上按Submit时,我想自动修剪某些文本框输入字段中的前后空格。由于表单是完全由react-jsonschema-form模块的<Form>元素呈现的,所以我不知道如何使用JavaScript代码来实现此功能。

react-jsonschema-form是否具有修剪功能?

谢谢!

1 个答案:

答案 0 :(得分:0)

有几种不同的方法可以做到这一点,但没有一种方法像标记那样简单以修剪所有字符串数据。

  1. 您可以定义一个自定义窗口小部件,并使用uiSchema指定要使用此窗口小部件的特定字段。然后,该小部件可以在使用本机onChange函数通知表单其值已更改之前修剪值,请参考:https://react-jsonschema-form.readthedocs.io/en/latest/advanced-customization/#custom-widget-components

  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替换所有字符串类型的字段:

    < / li>
const myWidgetOverrides = { TextWidget };

render() {
    return (
        <Form schema={schema}
            widgets={this.myWidgetOverrides}
        />
    );
}
  1. 您可以在扩展了React JSONSchema Form类的新类组件中覆盖validate函数:
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函数之前对其进行修剪。