javascript - PreventDefault() 不会阻止发送表单

标签 javascript jquery html forms

我有一个 html 片段

<form action="domains.php#searchdomain" method="post" name="m_domain">
      <a name="searchdomain"></a>
        <table class="dataTable" width="100%" border="0" cellspacing="0" cellpadding="5" id="" style="text-align:center; margin-top:0px; border-left:1px solid #ddd; border-right:1px solid #ddd; border-top:1px solid #ddd;">
          <tr>
            <td align="left" colspan="2"><div id="display_message" <?php echo $sstyle; ?>><?php echo $dis_msg; ?></div></td>
          </tr>
          <tr>
            <td align="left">Search Domain</td>
            <td align="left" style="display:none;" id="apply_text">Replace Selected Domains With</td>
          </tr>

          <tr>
            <td align="center"><table width="100%" border="0" cellspacing="0" cellpadding="0">
                <tr>
                  <td><input class="input_field" name="search_domain" id="search_domain" value="<?php echo $search_domain; ?>" type="text"></td>
                  <td>&nbsp;</td>
                  <td><input type="submit" class="btn blue_button" name="submit" value="Search"></td>
                </tr>
              </table></td>
            <td align="center"><table width="100%" border="0" cellspacing="0" cellpadding="0" id="apply_button" style="display:none;">
                <tr>
                  <td><input class="input_field" name="domain_name_url" id="domain_name_url" value="<?php echo $domain_name_url; ?>" type="text"></td>
                  <td>&nbsp;
                  <input name="domain_replace_id" id="domain_replace_id" 
                  value="" type="hidden">
                  <input name="domain_replace_link" id="domain_replace_link" 
                  value="" type="hidden">
                  </td>
                  <td><input type="submit" class="btn blue_button" name="submit" value="Apply" onclick="return validate();"></td>
                </tr>
              </table></td>
          </tr>
          <tr>
            <td align="center">
                <table width="100%" border="0" cellspacing="0" cellpadding="0">
                    <tr>
                      <td><input type="checkbox" name="status_domain" id="status_domain" <?php if($status_domain){?> checked <?php } ?>>&nbsp;Include inactive campaigns in search.</td>
                      <td>&nbsp;</td>
                      <td>&nbsp;</td>
                    </tr>
                </table>
            </td>
            <td align="center">&nbsp;</td>
          </tr>

        </table>
        <?php
        echo '<div style="border-bottom:1px solid #ddd; border-left:1px solid #ddd; border-right:1px solid #ddd;  width:100%; padding:10px;">';
        if(sizeof($request_list) > 0)
        {
        echo ' 
        <div class="pg_wrapper">
        <div class="progress" style="width:80%;float: left;position: relative; top: 0; z-index: 999; display: none;"><div class="progress-bar" role="progressbar" aria-valuenow="60"   aria-valuemin="0" aria-valuemax="100" ></div></div><div id="cancel_load" style="float: left; height: 23px; font-size: 12px; vertical-align:middle; padding-left: 5px; display: none;"><a style="color:#428bca;" href="javascript:void(0);" ><strong>Cancel</strong></a>
        </div>
        <div class="clearfix"></div>
        </div>
        ';
        }
        echo '</div>';
        ?>
        <div id="lp_pages_table" style="padding: 10px; border-left: 1px solid #ddd; border-right: 1px solid #ddd; border-bottom: 1px solid #ddd;">
            <table class="display compact" width="100%" border="0" cellspacing="0" cellpadding="5" id="domains_list" style="margin-top:0px; border:1px solid #ddd;">
                <thead>
                    <tr>
                    <th style="text-align:center;"><input type="checkbox" name="chk_all" class="checkall" id="checkedAll"></th>
                    <th>URL</th>
                    <th>Type</th>
                    <th>ID</th>
                    <th>Campaign</th>
                    <th>Status</th>
                    </tr>
                </thead>
            </table>

        </div>
        </form>

现在我有以下 jquery 代码片段

<script>
$(document).bind('keyup', function(e) 
{
    if (e.keyCode === 13) 
    {
        alert($('#domain_name_url').is(':focus'));
        if($('#domain_name_url').is(':focus')) 
        {
            alert("focus was on replace");
            e.preventDefault();
            return false;
        }
    }
});
</script>

我的问题是,

这样可以正常工作,但问题是,由于多了一个文本框和一个提交按钮,所以每当我按 Enter 键时,表单都会提交

所以我想限制类似这样的提交。

  1. 如果当前焦点位于文本框#domain_name_url 上并按下 Enter 键,则不会提交表单并调用验证函数。

  2. 如果当前焦点位于文本框 #search_domain 上并按下 Enter 键,则将提交表单并且不会调用验证。

在jquery代码片段中,问题是

if($('#domain_name_url').is(':focus')) 
        {
// the flow is entering into this statement, but the preventDefault() seems not working
            alert("focus was on replace");
            e.preventDefault();
            return false;
        }

最佳答案

要阻止发送表单,您应该阻止 onsubmit 事件。例如:

$('form[name="m_domain"]').on('submit', function(event){
    event.preventDefault();
    return false;
}

关于javascript - PreventDefault() 不会阻止发送表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27980235/

相关文章:

javascript - Vue.JS:为什么父元素不会接收事件?父组件必须是自定义组件吗?

javascript - 在 JavaScript 中使用 XMLHttpRequest 加载音频

javascript - jQuery 显示/隐藏切换 DIV

HTML:如何创建日历 View ?

javascript - 如何检测添加到 div 上的所有事件

javascript - 如何设置自定义组件模板并传递模板参数?

javascript - 如何使用 JQuery 更改网页外观?

javascript - 使用 Javascript/jquery 访问视频中某一帧的图片内容

javascript - bootstrap 按钮下拉菜单将所选值设置为 li

javascript - emmet 脚本 <脚本类型 ="text/javascript">