从提交功能触发onSubmit

时间:2018-07-02 14:47:20

标签: javascript php html submit onsubmit

是否可以通过调用来触发表单的onSubmit事件

function submitEdit(){
    document.getElementById("edit").submit();
};

这是行不通的

表格:

echo "<form id='edit' onsubmit='validate(flag, typeFlag)' method='post' style='width: 100%;height:86%;'>";`

onSubmit事件:

window.flag=false;
var typeFlag;

    function validate(flag, typeFlag) { 
        if   ( (flag==true) && (typeFlag==true) ){
            document.getElementById("edit").setAttribute('target', '_self');
            document.getElementById("edit").action ="date.php";
        } else if ( (flag==true) && (typeFlag==false) ){
            document.getElementById("edit").setAttribute('target', '_blank');
            document.getElementById("edit").action ="date_PDF.php"; 
        } else
            alert("Select an aircraft");
    } 

我做对了吗?我需要通过单击单选按钮来提交此表单。

echo '<td class="c3" style="color: #f79393">
                                <div class="radio">
                                    <label><input type="radio" name="name_check" onclick="typeFlag=true; submitEdit();" class="c3" value="in" id="c3" '; if($flag) echo'checked'; echo '>in</label>
                                </div>
                              </td>';

谢谢!

2 个答案:

答案 0 :(得分:0)

表单上的手动“提交”功能不会触发“提交”事件,因此您必须触发它。

train()
function submitEdit(){

var ele = document.getElementById('edit');
    ele.submit();
  

var event = new Event('submit', {
    'bubbles': true,
    'cancelable': true
});
ele.dispatchEvent(event);

}
submitEdit();

function validate() {
  console.log('form submitted');
}

答案 1 :(得分:0)

是否可以使用.submit()触发onSubmit?

否,不可能,validate()函数永远不会被触发。来自MDNsubmit()

  

直接调用此方法时,不会引发Submit事件(在   特别是,表单的onsubmit事件处理程序未运行),并且   约束验证也不会触发。

然后,由于您的action中没有<form>属性,因此在执行document.getElementById("edit").submit();时没有任何反应。