Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用react时fom在preventDefault()之后提交_Javascript_Reactjs - Fatal编程技术网

Javascript 使用react时fom在preventDefault()之后提交

Javascript 使用react时fom在preventDefault()之后提交,javascript,reactjs,Javascript,Reactjs,我在这里所做的是点击一个链接,验证是否所有字段都已填写,如果像往常一样填写提交表单,否则将显示一些错误。但是,在react中使用e.preventdefault之后,如何继续正常提交表单 var formComponent = React.createClass({ verifyFields: function (e) { e.preventDefault(); if (this.state.primaryGuestName && this.state.primaryGu

我在这里所做的是点击一个链接,验证是否所有字段都已填写,如果像往常一样填写提交表单,否则将显示一些错误。但是,在react中使用
e.preventdefault
之后,如何继续正常提交表单

var formComponent = React.createClass({
verifyFields: function (e) {
e.preventDefault();
    if (this.state.primaryGuestName && this.state.primaryGuestMobile) {
       // how can i continue with form submission here(not using xhr)
    } else {
        showErrors();
    }
},

render: function () {
<form action={this.props.action} ref="booking_form" acceptCharset="UTF-8" method="post">
    {form contents}
    <a href="" name="submit_details" onClick={this.verifyFields}
                           className="btn-flat btn-large rd-button">Confirm Details</a>
 </form>
}
}
var formComponent=React.createClass({
验证字段:函数(e){
e、 预防默认值();
if(this.state.primaryGuestName&&this.state.primaryGuestMobile){
//如何在此处继续表单提交(不使用xhr)
}否则{
淋浴器();
}
},
渲染:函数(){
{表单内容}
}
}

在表单上调用
提交

e.preventDefault();
    if (this.state.primaryGuestName && this.state.primaryGuestMobile) {
       e.target.submit();
    } else {
        showErrors();
    }
}

要显式提交表单,需要调用
submit()
方法

你的verifyFields函数会变成这样

verifyFields: function (e) {
e.preventDefault();
    if (this.state.primaryGuestName && this.state.primaryGuestMobile) {
       // how can i continue with form submission here(not using xhr)
        document.getElementById('myForm').submit();
    } else {
        showErrors();
    }
},

您不应该在dom中查询表单,而是使用
onSubmit
事件和按钮,这样实现就更简洁了:

var formComponent = React.createClass({
    submit: function(e) {
        if (!this.verifyFields()) {
            e.preventDefault();
            showErrors();
            return false;
        }

        // continue here..
        return true;
    },

    verifyFields: function () {
        return this.state.primaryGuestName && this.state.primaryGuestMobile;
    },

    render: function () {
        return (
            <form action={this.props.action} onSubmit={this.submit} acceptCharset="UTF-8" method="post">
                {form contents}
                <button type="submit" className="btn-flat btn-large rd-button">Confirm Details</button>
            </form>
        );
    }
});
var formComponent=React.createClass({
提交:职能(e){
如果(!this.verifyFields()){
e、 预防默认值();
淋浴器();
返回false;
}
//继续这里。。
返回true;
},
验证字段:函数(){
返回this.state.primaryGuestName&&this.state.primaryGuestMobile;
},
渲染:函数(){
返回(
{表单内容}
确认细节
);
}
});

这不起作用,因为它会抛出未定义的函数submit()。你是对的。我误读了你的代码,因为表单上有事件。