Javascript 是否适合将单击事件传递给提交处理程序?

Javascript 是否适合将单击事件传递给提交处理程序?,javascript,jquery,html,forms,Javascript,Jquery,Html,Forms,我有一个要通过单击提交的库,因为我使用的库使用标记而不是or来构建按钮 表单的onsubmit属性由PHP通过Laravel设置 我有一个脚本来处理在页面上的点击,这对我正在构建的页面很有效。“我的页面”的提交处理程序当前未使用该事件。但我想让这个通用。这就是问题所在: 是否可以将锚生成的单击事件发送到表单提交处理程序,还是需要表单提交事件 这是我的密码: <form method="POST" action="somewhere" onsubmit="return form_sub()"

我有一个要通过单击提交的库,因为我使用的库使用标记而不是or来构建按钮

表单的onsubmit属性由PHP通过Laravel设置

我有一个脚本来处理在页面上的点击,这对我正在构建的页面很有效。“我的页面”的提交处理程序当前未使用该事件。但我想让这个通用。这就是问题所在:

是否可以将锚生成的单击事件发送到表单提交处理程序,还是需要表单提交事件

这是我的密码:

<form method="POST" action="somewhere" onsubmit="return form_sub()" id="myForm">...</form>

<a id='saveButton' href='#'>Save</a>

<script type='text/javascript'>
$(document).ready(function() {
    $('#saveButton').click(function (e) {
        e.preventDefault();
        var $f = $('#myForm');
        if ($f.prop('onsubmit')) {
            if ($f.prop('onsubmit')(e)) { // <-- there, that event, passed to a handler that might expect a different "type" of event?
                $f.submit();
            }
        } else {
            $f.submit();
        }
    });
});
</script>

我也愿意接受我遗漏了一些东西的想法,有一种更简单的方法可以做到这一点——提交表单,其中包括/不包括基于处理程序是否存在对提交处理程序的调用,这也可以扩展到通过.addEventListener安装的处理程序。我知道$form.submit调用了$form.submithandler安装的事件处理程序,但这个问题不是这样的,我希望这段代码涵盖两种安装方式的处理程序。

您可以推迟屏幕外输入类型=提交或按钮类型=提交,并触发单击,以便用户仍然可以通过键盘提交,并用于屏幕阅读器/可访问性

函数形式{ 警报“提交”; 返回false; } $function{ $“保存按钮”。单击函数{ $'submit-btn'。单击; } } 提交btn{ 位置:绝对位置; 顶部:-999em; 左:-999em } 试试这个

$('#saveButton').click(function (e) {
    e.preventDefault();
    $("#myForm").submit()
});

不是所有人都执行js。。。您也尝试过$myform[0]。提交;wich调用js函数?当然不适合访问性。为什么你不能将css复制到输入中?@Jonasw由$f.prop'onsubmit'e调用的函数将是onsubmit=return form\u sub放置的不可见匿名函数。如果你希望e good或bad在form\u sub中可用,那么你需要编写类似onsubmit=return form\u sub.applynull的东西,参数或附加js而不是HTML中的onsubmit处理程序。这是一个很好的观点@Roamer-1888,也说明了通过onsubmit=funcy设置的函数通常不会处理eThanks charlie,在阅读您的评论后,我尝试将a而不是an设置为样式,结果很好,当然这也解决了提交事件处理程序部分。我仍然想知道这些事件是否兼容。老实说,任何解决方法都只是黑客。。。设计合适的元素是最好的