我正在使用react-jsonschema-form 1.2.1构建基于JsonSchema(v7)的表单。当用户在表单上按Submit时,我想自动修剪某些文本框输入字段中的前后空格。由于表单是完全由react-jsonschema-form模块的<Form>
元素呈现的,所以我不知道如何使用JavaScript代码来实现此功能。
react-jsonschema-form是否具有修剪功能?
谢谢!
答案 0 :(得分:0)
有几种不同的方法可以做到这一点,但没有一种方法像标记那样简单以修剪所有字符串数据。
您可以定义一个自定义窗口小部件,并使用uiSchema指定要使用此窗口小部件的特定字段。然后,该小部件可以在使用本机onChange函数通知表单其值已更改之前修剪值,请参考:https://react-jsonschema-form.readthedocs.io/en/latest/advanced-customization/#custom-widget-components
您可以定义自己的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}
/>
);
}
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函数之前对其进行修剪。