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

时间:2017-06-03 17:09:57

标签: javascript jquery html forms

我想通过点击<form>提交<a>,因为我使用的库使用<a>代码构建按钮而不是<button>或{{1} }。

表单的<input type='submit'>属性由PHP通过Laravel设置。

我有一个脚本来处理onsubmit上的点击,这适用于我正在构建的页面。我的页面的提交处理程序当前没有使用该事件。但我想让这个通用。问题在于:

发送&#34;点击&#34;是否可以由锚生成到表单提交处理程序的事件,或者它是否需要&#34;表单提交&#34;事件吗

这是我的代码:

<a>

我也愿意接受我错过了某些内容的想法,这样做更容易 - 提交包含/不包含电话的表单的某种方式根据处理程序是否存在提交处理程序,这也可以扩展到通过<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()安装的事件处理程序,但问题不是这样,我希望此代码涵盖双向安装的处理程序。

2 个答案:

答案 0 :(得分:1)

您可以关闭屏幕input type="submit"button type="submit"并触发点击,以便用户仍然可以通过键盘和屏幕阅读器/辅助功能提交

function form_sub() {
  alert('Submiting');
  return false;
}
$(function() {
  $('#saveButton').click(function() {
    $('#submit-btn').click();
  })
})
#submit-btn {
  position: absolute;
  top: -999em;
  left: -999em
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form method="POST" action="somewhere" onsubmit="return form_sub()" id="myForm">

  <a id='saveButton' href='#'>Save</a>
  <input id="submit-btn" type="submit" value="Submit">
</form>

理想情况下,将库按钮样式复制到input

应该相对容易

答案 1 :(得分:0)

试试这个

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