繁体   English   中英

检测提交的类型(如果通过输入键或单击按钮)

[英]Detect type of submit(if it was by enter key or button click)

我有以下代码:

<head>
    <script language="javascript">
        function subimiti(event){
            alert("Tipo do submit: "+event);
        }
    </script>
</head>
<body>
    <form id="f1" name="form1" onsubmit="subimiti(event)" action="http://www.google.com">
        <input type="text" id="meuId" value="Teste"/>
        <input id="butao" type="submit" value="Subimeta u fórmi trem bão!!"/>
    </form>

在我的JavaScript函数中,我希望我可以检测到导致表单提交的事件,如果是通过在我的文本字段上单击Enter还是通过单击按钮。

因为有一个提交按钮时keypress事件会触发click事件,所以我能想到的唯一解决方法是改用type = button。

纯JavaScript( 小提琴 ):

<form id="f1" name="form1" action="" onsubmit="subimiti(this)" method="POST">
  <input type="text" id="meuId" value="Test" onkeypress="setEvent(event)"/>
  <input id="butao" type="button" onclick="setEvent(event)" value="Subimeta u formi trem bao!!"/>
</form>

function subimiti(form)
{
  event.preventDefault();
  alert(form.getAttribute('event'));   

}

function setEvent(event)
{
 if(event.type == 'click')
 {
   document.form1.setAttribute('event','click');
   subimiti(document.form1);
 }
 else if (event.keyCode == 13)
 {
   document.form1.setAttribute('event','keypress');
 }
}

使用jQuery(我认为更简洁的代码):

$(function(){
  $('form').submit(function(){
    alert($(this).attr('event'));
  });

  $("input#butao").on('click', function(e) {
    $("form").attr("event", "click").submit();
  });      

  $("input").on('keypress', function(e) {
    if (e.which == 13)
    {
      $("form").attr("event", "keypress");
    }
  });            
}); 

有一个仅用于butao的单击侦听器,并为任何输入输入侦听器。

<form id="f1" name="form1" action="">
  <input type="text" id="meuId" value="Teste"/>
  <input id="butao" type="button" value="Subimeta u formi trem bao!!"/>
</form>

小提琴 (在小提琴上添加了preventDefault,因此您无需实际提交即可查看结果)

暂无
暂无

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

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