javascript - 如果输入上有 onBlur 处理程序,将不会调用表单上的 React onSubmit 处理程序? (仅在使用 Webstorm js 调试器时发生)

标签 javascript reactjs webstorm

我的代码的简化版本。如果我自己单击提交按钮,则会调用 onSubmit 处理程序。 如果我在编辑输入框后立即单击提交,将不会调用 onSubmit 处理程序。 React 就是这样设计的吗?在这种情况下如何调用 onSubmit。

const EmailInput = React.createClass({
    handleOnBlur(event){
        console.log('onBlur')
    },
    render(){
        return <div className="form-group">
            <label htmlFor={this.props.name}>Email</label>
            <input className="form-control"
                type='text'
                name={this.props.name}
                onBlur={this.handleOnBlur}
                value={this.state.val}
            />
        </div>
    }
})

const Form = React.createClass({
    onSubmit(e){
         console.log('onSubmit')
    },
    render(){
        return <form onSubmit={this.onSubmit}>{this.props.children}</form>
    }
})

ReactDOM.render(<Form>
         <EmailInput />   
         <button type="submit" className="btn btn-primary" >Share</button>
        </Form>, mountNode)

根据Dhaval的回答,我找到了原因。

当我使用 Webstorm js 调试器时,提交事件不会触发。当我只是单独使用浏览器时。结果很好。

这太奇怪了,我怀疑我做错了什么。有人可以在 Webstorm 上试试吗。

最佳答案

请检查下面提到的 Plunkar 当我点击 Share 按钮时它会调用 onSubmit

    // Code goes here
var EmailInput = React.createClass({
    handleOnBlur(event){
        console.log('onBlur')
    },
    getInitialState:function()
    {
      return{
        val:''
      }
    },
    render(){
        return <div className="form-group">
            <label htmlFor={this.props.name}>Email</label>
            <input className="form-control"
                type='text'
                name={this.props.name}
                onBlur={this.handleOnBlur}
                value={this.state.val}
            />
        </div>
    }
});
var Form = React.createClass({
    onSubmit(e){
         console.log('onSubmit')
    },
    render(){
        return <form onSubmit={this.onSubmit}>{this.props.children}</form>
    }
});
React.render(<Form><EmailInput /><button type="submit" className="btn btn-primary" >Share</button></Form>,
  document.getElementById('example')
);

Demo

关于javascript - 如果输入上有 onBlur 处理程序,将不会调用表单上的 React onSubmit 处理程序? (仅在使用 Webstorm js 调试器时发生),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34898242/

相关文章:

JavaScript超时重置机制

reactjs - 具有更高特异性的 Material UI 覆盖样式

javascript - Webstorm 崩溃,我的所有设置都消失了

javascript - 协助在类中 stub 函数

javascript - 滚动页面时,svg 元素上的 Bootstrap 弹出窗口会错误地重新定位自身

javascript - 在位置 :absolute header 顶部显示滚动条

ReactJS:Pngquant 构建失败,请确保安装了 libpng-dev

javascript - 使用原始 jsdoc 注释生成 Typescript .d.ts 文件?

javascript - 如何在WebStorm中将现有项目另存为项目模板?

javascript - 验证用户身份并同时将其添加到数据库