我有一个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> </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>
<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 } ?>> Include inactive campaigns in search.</td>
<td> </td>
<td> </td>
</tr>
</table>
</td>
<td align="center"> </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键时,表单都会提交
所以我想限制这样的提交。
如果当前焦点位于文本框#domain_name_url并且按下了输入,则表单将不会被提交并且将调用验证函数。
如果当前焦点位于文本框#search_domain并按下了输入,则表单将被提交并且不会调用验证。
在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;
}
答案 0 :(得分:6)
要阻止发送表单,您应该阻止onsubmit
事件。例如:
$('form[name="m_domain"]').on('submit', function(event){
event.preventDefault();
return false;
}
答案 1 :(得分:0)
每次执行提交按钮时都可能需要停止:
$(".blue_button").click(function(e) {
validate();
e.preventDefault();
});
并在此事件内部调用validate()函数以获取数据以及数据所需的所有其他内容。
这就是为什么提交按钮,在html中,始终将数据提交到标记的操作URL,但如果您手动停止执行提交操作则不会。然后在js中你必须调用validate()函数来检查用户是否按下了enter按钮等等。
答案 2 :(得分:0)
我不确定这是否适用于您的示例,但请尝试一下:
<script>
$(document).bind('keyup', function(e)
{
if (e.keyCode === 13)
{
e.preventDefault();
alert($('#domain_name_url').is(':focus'));
if($('#domain_name_url').not(':focus')) // note this has changed to NOT(':focus')
{
$('#domain_name_url').parents("form").submit();
//alert("focus was on replace");
//return false;
}
}
});
</script>
您可能还需要绑定到keydown事件而不是keyup