除了提交按钮之外,还使用 ​​Enter 键提交 JQuery 表单

Posted

技术标签:

【中文标题】除了提交按钮之外,还使用 ​​Enter 键提交 JQuery 表单【英文标题】:Submit JQuery form with Enter Key in addition to submit button 【发布时间】:2021-08-28 14:57:06 【问题描述】:

我从另一个开发商那里接手了一个房地产销售网站的开发工作。不幸的是,我不是 JQuery 专家,并且有一个脚本导致了我的问题。

下面的脚本允许用户在特定邮政编码下查找房产的价格信息。然而,表单只会在点击“提交按钮”时提交,而不是在按下回车键时提交。请问有大神可以给个解决办法吗?


jQuery(document).ready(function($) 

    // $('#postcode_form').on('submit', function (e) 
    $('#postcode_form_submit').on('click', function (e) 


    
    
          
          e.preventDefault();
          
          $('.emsg').addClass('hidden');
          $('.emsg').hide();
          // var postcodeRegEx = /[A-Z]1,2[0-9]1,2 ?[0-9][A-Z]2/i; 
          var postcodeRegEx = /[A-Z]1,2[0-9][0-9A-Z]?\s?[0-9][A-Z]2/g; 
         
          if (!postcodeRegEx.test($("#postcode").val()))
          
            // there is a mismatch, hence show the error message
            $('.emsg').removeClass('hidden');
            $('.emsg').show();
            return;
                 
          
          $.ajax(
          
            type: 'post',
            url: '/ajax_getresults.php',
            // url: '/get_properties/',
            data: $('#postcode_form').serialize(),
            data:postcode:$("#postcode").val(),
            success: function (data,status) 
            
              let result=jQuery.parseJSON(data);
              if (result.status=="success")
                             
                   $("#postcode_table").removeClass('hidden');
                   $("#postcode_table").find("tr:gt(0)").remove();
                   // $("#postcode_table").empty();
                  let items=result.data;
                  $.each(items, function(index, value) 
                  
                        //$("#servers").text($("#servers").text() + " " + value.servername);
                        $('#postcode_table').append("<tr>"+
                        "<td>"+value.house_no+"</td>"+
                        "<td>"+value.street+"</td>"+
                        "<td>"+value.sale_price+"</td>"+
                        "<td>"+value.date+"</td>"+
                        +"</tr>");                      
                  );
              
              else
              
                  alert ("invalid results");
              
            
          );
    );

);
</script>
<div class="col-md-12">
<br/>
<hr/>
                            <div class="user_details_row">Please enter a Postcode to look up land registry sale history</div>
<div>
<form id="postcode_form" action="/get_properties/" method="post">
    <label for="property_label_before">
  Please enter postcode in capitals (e.g LS16 5BA):</label>
  <br>
  <input type="text" name="postcode" id="postcode" value="" placeholder="LS16 5BA" size="40" style="max-width: 200px;display: block; margin-bottom: 10px;">
<span class="emsg hidden" style="display: block; font-weight: bold; text-transform: uppercase;" >Please enter a valid postcode</span>
  <input id="postcode_form_submit" type="button" value="View historical sale price data" style="background-color: #0047ab; color: #fff; padding:15px;text-transform: uppercase; font-weight: 700;">
</form>  
</div>
        <div class="col-md-12">
            <br/>
          
            <table id="postcode_table" class="hidden" style="width:100%;text-align:left;">
                <thead>
                    <tr style="font-weight:bold;">
                            <th style="font-weight:bold;">HOUSE NO</th><th style="font-weight:bold;">STREET</th><th style="font-weight:bold;">SALE PRICE</th>
                            <th style="font-weight:bold;">DATE SOLD</th>
                    </tr>
                <thead>
                <tbody>
                </tbody>
            </table>
        </div>
    </div>



【问题讨论】:

看起来这是一个有意识的设计决定,要求用户单击提交,因为新用户(或老年人(全面概括 c))会在中途按 Enter 并提交表单。因此设计师/开发人员将其删除,以免意外发生。特别是如果表单具有多行输入,其中输入 提交。将输入作为提交可能会令人困惑。您可以随时 Tab 到提交按钮并按空格键。 【参考方案1】:

为什么$('#postcode_form').on('submit', function (e) 被注释掉了?这是正确的做法,您只需将&lt;input id="postcode_form_submit" type="button" 更改为&lt;input id="postcode_form_submit" type="submit"。如果有提交按钮,浏览器会按 Enter 提交。

【讨论】:

完美,已经解决了,我完全错过了!非常感谢:)

以上是关于除了提交按钮之外,还使用 ​​Enter 键提交 JQuery 表单的主要内容,如果未能解决你的问题,请参考以下文章

按钮特效-Enter键自动提交表单

除了在cshtml中提交之外,如何对其他按钮使用验证?

提交表单问题... Enter 键

Enter 键提交 Ajax 表单

如何防止在 jQuery 中提交 Enter 键? [复制]

停止输入/返回键提交表单[重复]