![](/img/trans.png)
[英]JQuery / JavaScript - trigger button click from another button click event
[英]Trigger a button click with Javascript / jQuery when the
我试图用jQuery“点击”搜索提交按钮。 我使用Wordpress的“即时搜索和建议”插件,当您开始在搜索字段中输入关键字时会生成建议。 如果在后端启用,则有一个选项,当您单击建议的关键字时,它将直接带您到该特定建议的特定单个帖子页面。 我已禁用该功能,因为我需要他们进入搜索结果页面,而不是直接将用户带到单个帖子页面。 在禁用该选项的情况下,当您单击建议时,所有插件都将在您单击建议时将建议的关键字(帖子标题)插入搜索字段。
场景如下:用户开始键入关键字>插件提供建议>用户在“建议”上单击>插件将单击的关键字/建议插入搜索字段>提交时单击脚本。
除了最后一部分-“提交时单击脚本”-一切正常。
我尝试了几种不同的方法。
jQuery(".iss-result").on('click',function(){
jQuery('#topsearchsubmit').trigger("click");
});
还尝试了这个:
$( ".iss-result" ).click(function() {
$( "#topsearchform" ).submit();
});
.iss-result是搜索字段下下拉菜单中的一类建议。 #topsearchform是表单ID,而#topsearchsubmit是该表单的按钮ID。
我已经尝试过jQuery(document).ready(function($)和没有它,但无论如何都没有结果。检查时也没有任何js错误。
你能帮我吗? 用户单击.iss-result li项目后,如何单击该搜索按钮?
谢谢
PS这是要求的搜索表单HTML
<form role="search" method="get" id="topsearchform" class="searchform group navbar-form" action="<?php echo home_url( '/' ); ?>">
<div class="input-group header-large-search-field login-popup">
<label for="s"><span class="offscreen sr-only"><?php echo _x( 'Search for:', 'label' ) ?></span></label>
<input type="search" class="search-field form-control" placeholder="<?php echo esc_attr_x( 'Search', 'placeholder' ) ?>"
value="<?php echo get_search_query() ?>" name="s" />
<div class="input-group-btn">
<button id="topsearchsubmit" class="btn btn-default2 btn-top-search" type="submit"><i class="fa fa-fw fa-search"></i></button>
</div>
<?php /* input type="image" alt="Submit search query" src="<?php echo get_template_directory_uri(); ?>/images/search-icon.png"> */ ?>
</div>
</form>
我认为这对您有帮助
jQuery(".iss-result").on('click',function(e){
e.preventDefault();
var form=jQuery('#topsearchsubmit');
$.ajax({
type: 'POST',
url: form.attr('action'),
data: form.serialize(),
dataType:'json',
success: function (data) {
},
});
});
由于在搜索时会创建并销毁具有.iss-result
类的元素, .iss-result
当您要将事件绑定到它们时,它们将不存在。 您应该使用事件委托并侦听父元素(如表单)上的单击事件。 将事件源过滤为.iss-result
,您应该能够听到这些点击。
其次,您可能不应该立即触发提交,因为插件(也在侦听这些相同的点击)需要花费时间将所选值放入input
元素。 因此,您应该异步生成提交单击(使用setTimeout
)。
jQuery("#topsearchsubmit").on('click', '.iss-result', function() {
setTimeout(function () {
jQuery('#topsearchsubmit').click();
}, 0);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.