繁体   English   中英

从提交 function 触发 onSubmit

[英]Trigger onSubmit from submit function

是否可以通过调用它来触发表单的 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>';

谢谢你!

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

 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'); } 
 <form id='edit' onsubmit='validate()' method='post' style='width: 100%;height:86%;'> <input type='text' value='name'/> </form> 

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

不,不可能, validate()函数永远不会被触发。 MDN submit()

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

然后,由于您的<form>没有action属性,因此在执行document.getElementById("edit").submit(); 什么都没发生。

2022 更新

这篇文章很旧,但我不妨留下一个新的工作解决方案。 看来requestSubmit()正是 OP 需要的。 MDN 文档

更新后的 function:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM