javascript - React.js 和 HTML5 电子邮件验证

标签 javascript html validation reactjs

我的 react 组件中有一个电子邮件输入:

                <input
                  type="email"
                  autoComplete="email"
                  placeholder="Email"
                  required
                  value={this.state.formData.email}
                  onChange={this.handleFieldChange('email')}
                />

这会在控制台中向我发出警告:

 The specified value "myemail" is not a valid email address.

每次击键,直到输入是有效的电子邮件。 我相信这是默认的 HTML5 电子邮件验证消息,因为我每次击键都会更改它的状态,因此会重新呈现它,而 HTML5 会重新验证它。将类型更改为“文本”可修复它,但我希望将其保留为“电子邮件”。为了避免那些 html5 警告,在 react 中处理这个问题的正确方法是什么?

最佳答案

对于受控输入,React 最终必须调用 Element.prototype.setAttribute() ,至少在 Chrome 52 中(我还没有用其他浏览器进行测试)这会导致警告被记录到控制台。不受控制的输入或非 React、普通 HTML5 表单不会显示此警告。

查看 DOMPropertyOperations.setValueForProperty() 在 React 源代码中,特别是第 162 行(在 v15.3.0 中)<input>

关于javascript - React.js 和 HTML5 电子邮件验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38985668/

相关文章:

javascript - PDFTron : How to add an input field

javascript - addEventListener 'click' 只工作一次

Javascript - 为每个字母添加一个跨度

javascript - 图像转换 CSS/JavaScript

c# - 从验证属性中检索模型元数据

python - 需要帮助理解 sklearn python 中的 cross_val_score

javascript - 您的浏览器不支持 Flash、Silverlight 或 HTML5

html - 仅CSS的砌体布局

javascript - angular.js , Angular 中的模板数据

validation - 添加字段验证失败时的全局消息