【问题标题】:prevent enter on submit button only, not the rest of the form [duplicate]仅防止在提交按钮上输入,而不是表单的其余部分[重复]
【发布时间】:2014-05-31 18:15:23
【问题描述】:

好的,所以我一直在寻找可以执行此操作的一段代码,但没有什么适用于我的情况。

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

我发现的是阻止 Enter 键期间的脚本,或者该脚本不起作用,因为我认为我使用 <button> 而不是 <input> 作为我的提交按钮,我不是真的。

我的表格

<form action="" method="post" onsubmit="return false;" id="myform">

我的 javascript 用于我的搜索

    function showSub(str) {
    var xmlhttp;
    if (str=="") {
      document.getElementById("txtSub").innerHTML="";
      return;
    }
    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
    }
    else {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function() {
      if (xmlhttp.readyState==4 && xmlhttp.status==200) {
        document.getElementById("txtSub").innerHTML=xmlhttp.responseText;
      }
    }
    xmlhttp.open("GET","findLogo.php?q="+encodeURIComponent(str),true);
    xmlhttp.send();
}  
$(document).on('change', '#searchText', function() {
// Get the search text
var searchText = $(this).val();
// Make sure it isn't empty
    if (searchText.length > 0) {
        // Send the update request
        showSub(searchText);
    }
});

我的搜索输入

<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 后提交脚本

<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();
            }
        });
    });
});

【问题讨论】:

  • 不剩下表格是什么意思
  • 我有一个表单本身的搜索脚本,我想在按下回车键时执行搜索。
  • 我不明白,该表单永远不会被提交,因为您在表单的内联 onsubmit 中返回 false,那么您在这里真正想要做什么?
  • 返回 false 用于我的 ajax 脚本,该脚本在另一个页面上提交表单。一旦按下&lt;button&gt;,它就会将其发送到postadd.php。所以页面不会转到另一个页面,它会停留在同一页面上。我的表单现在的工作方式是任何文本字段,当您按下回车键时,会触发提交按钮并导致表单出错。我想阻止表单在物理按下回车键时提交,但不阻止在我的搜索字段输入中使用回车键。
  • 大多数脚本现在只是阻止所有表单文本字段使用 enter 并解决了他们的问题,但我的表单上有一个搜索输入,我想让用户按 enter 以完成他们的搜索。所以在文本字段中允许输入键,但不允许提交表单本身。

标签: javascript jquery forms preventdefault enter


【解决方案1】:

解决方案基本上是基于检测按键并阻止表单提交

  1. 首先制作两个用于搜索和表单提交的按钮为&lt;input type="button" /&gt;
  2. 为了区分搜索按钮和提交按钮,我在这里添加了合适名称的类,我添加了.submit.Search
  3. 另一件事,.submit button 上使用了链接,它用于防止在按下的键是回车键时执行单击事件块
  4. 如果使用 Enter 键阻止提交会导致另一个问题,如果单击任何其他按钮,则通过选择该按钮表单将进入以防止其他情况也被添加,这会阻止使用提交按钮提交基于按钮的表单,另一个优点是您可以添加任何自定义按钮以进行提交
  5. 接下来,Click 块提交通过第 4 步到达的表单,如果按键是开始执行进程的原因,则该步骤停止

两个示例添加了一个基于单击的提交按钮,另一个基于单击/Enter 进行搜索

另一个优点是它不会阻止您使用输入搜索按钮

Solved Click for demo To know the difference submit with enter key and search with enter key

HTML

<input type="button" class="Submit" value="Submit"/>

<input type="button" class="Search"  value="Search"/>

jQuery

​​>
$("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");
            });

编辑:

Demo With Search just like google on entering text to search on text box and clicking enter triggers the search

在搜索框中输入一些文字按回车键

jQuery

​​>
$("input.Search").keypress(function(event){

          if(event.which=='13'){

            alert("Key enter key entered ");

        }
    });

【讨论】:

  • 为什么我的搜索字段必须有一个搜索按钮?我希望用户能够按回车键进行搜索。
  • 出于简单解释的目的,我添加它只是为了解释差异,只有在单击相应按钮时才会触发第一个块我的意思是带有 .submit 类的按钮,因此您可以随意使用输入键目前还有什么用途
  • 另外,我不知道它是否只是 jfiddle,但是当我按下“输入”时,什么也没有发生。除此之外
  • 首先点击标签,它会选择提交按钮,然后按回车,然后按另一个标签进入文本框,输入一些文本,然后按回车。要知道区别,请点击提交按钮,然后你会看到
  • @Sickest 你检查过小提琴吗
猜你喜欢
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-30
  • 2016-02-07
  • 1970-01-01
相关资源
最近更新 更多