Javascript 仅在提交按钮上禁止输入,而不是表单的其余部分

Javascript 仅在提交按钮上禁止输入,而不是表单的其余部分,javascript,jquery,forms,preventdefault,enter,Javascript,Jquery,Forms,Preventdefault,Enter,好的,我一直在寻找一段代码来实现这一点,但没有任何东西适用于我的情况 我的问题:我试图阻止表单在按下“回车”键时提交,但允许表单中的我的搜索脚本在按下“回车”键时提交 我发现一些脚本阻止了回车键周期,或者脚本不起作用,因为我认为我使用的是而不是作为提交按钮,我不确定 我的表格 <form action="" method="post" onsubmit="return false;" id="myform"> 我的搜索输入 <input type="text" id="sea

好的,我一直在寻找一段代码来实现这一点,但没有任何东西适用于我的情况

我的问题:我试图阻止表单在按下“回车”键时提交,但允许表单中的我的搜索脚本在按下“回车”键时提交

我发现一些脚本阻止了回车键周期,或者脚本不起作用,因为我认为我使用的是
而不是
作为提交按钮,我不确定

我的表格

<form action="" method="post" onsubmit="return false;" id="myform">
我的搜索输入

<input type="text" id="searchText" value="" />
<div id="txtSub"></div>

我的提交按钮

<input type="hidden" value="Post" name="submit" /> 
<button type="submit" style="height:33px; width:50px">
<img src="../css/images/plus_25.png" />
</button>

我的java脚本提交后脚本

<script type="text/javascript">
$(function(){
    $('button[type=submit]').click(function(e){
        e.preventDefault();
        $.ajax({
            type: "POST",
            url: "postadd.php",
            data: $("#myform").serialize(),
            beforeSend: function(){
                $('#result').html('<div class="success"><img src="../images/loading-blue.gif" width="25" /></div>');
            },
            success: function(data){
                $('#result').html(data);
                $('html, body').animate({scrollTop:$(document).height()}, 'slow');
                //document.getElementById('footer').scrollIntoView();
            }
        });
    });
});

$(函数(){
$('button[type=submit]')。单击(函数(e){
e、 预防默认值();
$.ajax({
类型:“POST”,
url:“postadd.php”,
数据:$(“#myform”).serialize(),
beforeSend:function(){
$('#result').html('');
},
成功:功能(数据){
$('#result').html(数据);
$('html,body').animate({scrollTop:$(document.height()},'slow');
//document.getElementById('footer').scrollIntoView();
}
});
});
});

解决方案基本上基于检测按键和防止表单提交

  • 首先,制作两个按钮,用于搜索和表单提交,如
  • 为了区分“搜索”按钮和“提交”按钮,我在这里添加了具有合适名称的类,包括
    .submit
    .search
  • 另一件事,链接是在
    上使用的。submit按钮
    用于防止在按下enter键时执行click事件块
  • 使用enter键阻止提交会导致另一个问题,如果选择任何其他按钮,则单击该按钮,表单将输入以阻止提交,否则还会添加其他情况,这会阻止使用“提交”按钮提交基于按钮的表单,另一个优点是,您可以添加任何自定义按钮进行提交
  • 接下来,单击块提交通过步骤4到达的表单,如果按键是开始执行流程的原因,则该步骤将停止

  • 添加了两个示例,一个带有基于单击的提交按钮,另一个用于基于两个单击/输入的搜索

    另一个优点是,它不会阻止您使用enter for search按钮

    HTML 编辑:

    在搜索框中输入一些文本,然后按enter键

    滑动分页
    你说表单的其他部分没有搜索脚本是什么意思?我想在按下enter键时执行搜索的表单中有一个搜索脚本。我不明白,该表单永远不会被提交,因为你在表单的内联onsubmit中返回false,那么你到底想在这里做什么呢?返回false是针对我在另一个页面上提交表单的ajax脚本。按下
    后,将其发送到postadd.php。因此,该页不会转到另一页,而是停留在同一页上。我的表单现在的工作方式是,当您按enter键时,任何文本字段都会触发submit按钮并导致表单出现错误。我想在按下enter键时阻止表单提交,但不阻止在搜索字段输入中使用enter键。大多数脚本现在只是阻止所有表单文本字段使用enter键,这就解决了它们的问题,但是我的表单上有一个搜索输入,我想让用户点击enter来完成他们的搜索。因此,文本字段中允许输入键,但不允许提交表单本身。为什么我必须为搜索字段设置搜索按钮?我希望用户能够按enter键进行搜索。仅出于简单的解释目的,我添加了它来解释差异。只有在单击相应的按钮时,才会触发第一个块。我的意思是,按钮带有。提交类已附加,因此您可以在任何其他地方自由使用enter键用于任何目的,我不知道它是否只是jfiddle,但当我按下“回车”键时,什么也没发生。除了点击选项卡外,它将首先选择提交按钮,然后按enter键,再按另一个选项卡进入文本框,键入一些文本,然后按enter键。要了解差异,请单击提交按钮,然后您将see@Sickest你检查小提琴了吗
    <script type="text/javascript">
    $(function(){
        $('button[type=submit]').click(function(e){
            e.preventDefault();
            $.ajax({
                type: "POST",
                url: "postadd.php",
                data: $("#myform").serialize(),
                beforeSend: function(){
                    $('#result').html('<div class="success"><img src="../images/loading-blue.gif" width="25" /></div>');
                },
                success: function(data){
                    $('#result').html(data);
                    $('html, body').animate({scrollTop:$(document).height()}, 'slow');
                    //document.getElementById('footer').scrollIntoView();
                }
            });
        });
    });
    
    <input type="button" class="Submit" value="Submit"/>
    
    <input type="button" class="Search"  value="Search"/>
    
    $("input.Submit").keypress(function(event){
    
        if(event.which=='13'){
    
            alert("Key enter key entered ");
         event.preventDefault();
    
    
    
     }else{
          event.preventDefault();
        }
    
    
    }).click(function(event){
        alert("Here is the submit Button works on click write jquery ");
    
      $( "#FormId" ).submit();
    });
    
    
    //The Code For Search Which could be triggered by both keypress and click
    
    
      $("input.Search").click(function(event){
    
                  alert("Works for both enter and click");
                });
    
    $("input.Search").keypress(function(event){
    
              if(event.which=='13'){
    
                alert("Key enter key entered ");
    
            }
        });