【发布时间】:2015-06-24 08:49:11
【问题描述】:
我正在尝试使用 formsy-react 摆脱浏览器的默认验证逻辑,根据文档,“formNoValidation”属性应该可以解决问题。但我无法让它工作。
我做错了什么?
var React = require('React');
var Formsy = require('formsy-react');
var Input = require('./forms/Input.js');
module.exports = React.createClass({
render: function () {
return (
<Formsy.Form>
<Input ref="phonenumber" id="phonenumber" value={this.state.phonenumber.value} name="phonenumber" required validations="isNumeric" validationError="Please provide a valid phone number" />
</Formsy.Form>
);
}
});
Input.js
var Formsy = require('formsy-react');
var React = require('React');
module.exports = React.createClass({
mixins: [Formsy.Mixin],
changeValue: function (event) {
this.setValue(event.currentTarget.value);
},
render: function () {
var className = this.showRequired() ? 'required' : this.showError() ? 'error' : null;
var isReadOnly = this.props.readOnly;
var errorMessage = this.getErrorMessage();
return (
<div className={className}>
<input type="text" onChange={this.changeValue} value={this.getValue()} readOnly={isReadOnly} required={this.isRequired()} formNoValidate />
<span>{errorMessage}</span>
</div>
);
}
});
谢谢!
【问题讨论】:
-
在您的示例中,您显示了一个带有单个 Input 元素的表单。但是,在您的屏幕截图中,您似乎正在渲染表单中的其他元素。如果只有一个元素,它将成为提交表单的默认控件,因此 formNoValidate 起作用。 github.com/christianalfoni/formsy-react/issues/…
-
代码示例只是精简了。我有几个输入元素。
-
formNoValidate属性适用于提交表单的元素。仅当它是表单中的唯一输入时,将其放在“文本”类型的输入上才会起作用,因为它成为提交表单的输入。
标签: javascript html reactjs html5-validation