在React组件

时间:2015-07-22 13:44:01

标签: javascript dom reactjs

我有一个React输入组件,我想在每次模糊后使用HTML5约束验证来验证用户输入。

var TextField = React.createClass({

    handleValidation: function () {
        React.findDOMNode(this.refs.textField).checkValidity();
        //TODO listen on invalid event
    },

    render: function () {
        return (
            <input ref="textField" onBlur={this.handleValidation} />
        )
    }
});

2 个答案:

答案 0 :(得分:1)

有理由听这个事件吗?

“checkValidity()方法,如果元素无法满足任何约束,则返回false,否则返回true。” MDN source

所以你可以检查这个函数是否返回false。

if (!React.findDOMNode(this.refs.textField).checkValidity()) {
  // not valid
}

答案 1 :(得分:0)

您可以尝试在componentDidMount函数中放置一个事件监听器......可能是这样的吗?

componentDidMount: function() {
  React.findDOMNode(this.refs.textField).addEventListener("invalid", function () {
    //do something here
  });
},

请记住,如果您导航到另一个组件,则应首先删除事件侦听器。希望这会有所帮助。