我有以下代码片段:
<form id="searchform" method="get" action="<?php bloginfo('siteurl')?>/">
<input type="text" name="s" id="s" class="textbox" placeholder="Search" />
<input type="submit" id="t" value=">" class="searchsubmit">
</form>
不幸的是,如果没有输入搜索字符串,并且按下了提交按钮或点击了Enter,则会将您带到不需要的页面。
对我来说这是博客页面,因为我可以看到正文中的“博客”课程。
如何在输入字符串之前阻止搜索触发?
感谢您的时间和帮助。
答案 0 :(得分:2)
那是你在找什么?
$('#t').click(function(){
if($('#s').val() == ''){
return false;
}
});
答案 1 :(得分:1)
一个 - 您可以在输入标记
中使用HTML5required
属性
<input type="text" name="s" id="s" class="textbox" placeholder="Search" required/>
虽然并非所有浏览器都完全支持它,您可以在此处查看 https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input#Browser_compatibility
两个 - 将提交处理程序绑定到您的表单并在提交之前进行检查 - 这样它处理按钮单击并在表单中输入按键
$('#searchform').submit(function(){
if($('#s').val() == ''){
return false;
}
});
或
$('#searchform').submit(function(e){
if($('#s').val() == ''){
e.preventDefault();
}
});
答案 2 :(得分:0)
您可以使用jQuery阻止表单,因此如果为空,它就不会提交,如Pavlo建议的那样,通过在地址栏中键入?s=
仍然可以解决这个问题...
或者将其放在functions.php
上。它会将空搜索提交重定向到主页:
function search_redirect($query) {
if ( !is_admin() && $query->is_main_query() )
if ($query->is_search) {
wp_redirect( home_url() ); exit;
}
}
}
add_action('pre_get_posts','search_redirect');