Redux表单:提交空白字段导致错误
redux form: submitting blank field cause error
我想提交非请求/可选字段。只有几个字段被验证。因此,如果我只提交请求和验证的字段,则submitFailed被设置为true,没有任何错误消息。如果我提交所有字段,表单提交正确。这是我的代码:
import React from 'react'
import { Field, reduxForm } from 'redux-form'
import classnames from 'classnames'
const validate = values => {
const errors = {};
if (!values.vehicleNumber) {
errors.vehicleNumber = 'Questo campo è obbligatorio'
}
if (!values.vehicleKm) {
errors.vehicleKm = 'Questo campo è obbligatorio'
}
if (!values.vehicleAssicurationEnd) {
errors.vehicleAssicurationEnd = 'Questo campo è obbligatorio'
}
if (!values.vehicleTaxEnd) {
errors.vehicleTaxEnd = 'Questo campo è obbligatorio'
}
if (!values.vehicleRevisionEnd) {
errors.vehicleRevisionEnd = 'Questo campo è obbligatorio'
}
if (!values.vehicleType) {
errors.vehicleType = 'Questo campo è obbligatorio'
}
return errors
};
const renderField = ({ input, label, type, meta: { touched, error } }) => (
<div className={classnames({'has-error': touched && (error), 'form-group': true})}>
<label>{label}</label>
<input {...input} type={type} className="form-control" />
<div className="text-help text-danger">{touched ? error : ''}</div>
</div>
);
const renderSelectField = ({ input, label, meta: { touched, error } }) => (
<div className={classnames({'has-error': touched && (error), 'form-group': true})}>
<label>{label}</label>
<select {...input} className="form-control">
<option></option>
<option value="furgone">Furgone</option>
<option value="passo-lungo">Furgone passo lungo</option>
<option value="cassonato">Centinato</option>
<option value="motrice">Motrice</option>
<option value="motrice-sponda">Motrice con sponda</option>
</select>
<div className="text-help text-danger">{touched ? error : ''}</div>
</div>
);
const VehicleForm = (props) => {
const {handleSubmit, submitted, pristine, vehicleNumber, handleDeleteVehicle} = props;
return (
<div>
<h1 className="text-center margin-bottom">{(vehicleNumber == null) ? "Nuovo automezzo" : vehicleNumber}</h1>
<form onSubmit={handleSubmit} className="col-md-6 col-md-offset-3">
<Field name="vehicleName" label="Nome automezzo" component={renderField} type="text" />
<Field name="vehicleNumber" label="Targa*" component={renderField} type="text" />
<Field name="vehicleKm" label="Chilometri aggiornati*" component={renderField} type="number" />
<Field name="vehicleFuel" label="Carburante" component={renderField} type="text" />
<Field name="vehicleAssicurationEnd" label="Scadenza assicurazione*" component={renderField} type="date" />
<Field name="vehicleAssicurationName" label="Nome assicurazione" component={renderField} type="text" />
<Field name="vehicleAssicurationId" label="Codice pratica assicurativa" component={renderField} type="text" />
<Field name="vehicleTaxEnd" label="Scadenza bollo*" component={renderField} type="date" />
<Field name="vehicleRevisionEnd" label="Scadenza revisione*" component={renderField} type="date" />
<Field name="vehicleType" label="Tipologia*" component={renderSelectField} />
<button type="submit" disabled={pristine || submitted} className="btn btn-primary">Salva</button>
<button type="button" className="btn btn-danger pull-right" onClick={handleDeleteVehicle}>Elimina</button>
</form>
</div>
);
};
export default reduxForm({
form: 'newVehicleForm',
validate
})(VehicleForm);
我解决了这个问题。当我提交空值时,我需要检查它并添加一个空字符串,否则服务器会拒绝它。
在我的动作调度中:
export function newVehicle(values, userID, branchID) {
return dispatch => {
const ref = firebase.database().ref('vehicles').child(userID).child(branchID).push();
ref.set({
vehicleName: (values.vehicleName ? values.vehicleName : ""),
vehicleNumber: values.vehicleNumber,
vehicleFuel: (values.vehicleFuel ? values.vehicleFuel : ""),
vehicleKm: values.vehicleKm,
vehicleAssicurationEnd: values.vehicleAssicurationEnd,
vehicleAssicurationName: (values.vehicleAssicurationName ? values.vehicleAssicurationName : ""),
vehicleAssicurationId: (values.vehicleAssicurationId ? values.vehicleAssicurationId : ""),
vehicleTaxEnd: values.vehicleTaxEnd,
vehicleRevisionEnd: values.vehicleRevisionEnd,
vehicleType: values.vehicleType
}).then(()=>{
dispatch(newVehicleButtonDismissed());
}).catch((error)=>{
dispatch(errors(error));
});
}
}
相关文章:
- NodeJS用Multer上传图片;错误:意外字段“”;
- Jquery 验证插件 - 字段仍然产生错误
- 我如何让我的 var 错误消息输出是使用字段还是字段,具体取决于留空的字段数
- 在应用 jQuery.Selected 时,使用 jQuery.Validate 来验证选择字段时,暴露错误
- mongodb mongodump json日期字段解析错误
- jQuery自定义验证只显示最后一个字段的错误
- "未捕获的类型错误:未定义的不是函数“;当向输入字段添加值时
- 将字符串返回到类型为“0”的输出字段;数字“;针对用户错误javascript
- 如何在使用Knex.JS添加字段时捕捉错误
- 应用于 html5 数值字段的 javascript 的错误行为
- JavaScript cookie 输入字段字符串显示错误
- 用于显示字段的工具提示和显示 Jquery 验证中的错误的工具提示器
- 使用 multer 上传文件,错误:意外字段
- Javascript Form Validation.如何使用 OnFocus 在输入字段上时消除错误
- 自动递增序列字段错误 - MongoDB,Mongoose
- 模态窗口(弹出窗口)警报在使用 angularJs 的错误字段上显示
- Javascript SQL请求where子句中出现错误字段错误
- GraphQL交叉引用抛出错误:字段类型必须是输出类型,但得到:[object object]
- 删除:focus/ control生成错误字段上的输入文本
- GraphQL错误字段必须是一个以字段名作为键的对象,或者是一个返回这样一个对象的函数