只有在文档内部的警报准备就绪后,触发器才能工作

Trigger working only after alert inside document ready

本文关键字:触发器 工作 准备就绪 文档 内部      更新时间:2023-09-26

我有这个代码:

$(document).ready(function () {
            active_menu('mn_tours');
            $('#buscar').val(localStorage.getItem("busqueda"));
            $('#btbuscar').trigger('click');
        });

我想在页面加载时立即触发该按钮上的提交事件,但它似乎不起作用,但当我输入以下内容时:

$(document).ready(function () {
            active_menu('mn_tours');
            $('#buscar').val(localStorage.getItem("busqueda"));
            alert('Something');
            $('#btbuscar').trigger('click');
        });

它确实有效,但我不知道如何纠正。

经过初步测试,此代码可以工作。。。

<form id="myForm" action="#" method="POST">
  <input type="text" id="buscar"/>
</form>
<div id="btbuscar">
  help
</div>

$(document).ready(function () {
  $('#buscar').val(localStorage.getItem("busqueda"));
  $("#btbuscar").bind('click', function(evt){
    $("#myForm").submit()
  })
  $("#myForm").bind('submit', function(evt){
    alert("form submitted")
  })
  $('#btbuscar').trigger('click');
});

如果没有看到您最初的按钮侦听器分配,我无法判断这是否正是您想要的,但只要侦听器设置正确,这个方法就会起作用。

您有一个定时问题。当javascript运行这个:

$('#btbuscar').trigger('click');

HTML元素还不存在,所以提交永远不会发生。

Alert将暂停javascript的执行。因此,当您单击"确定"时,HTML元素#btbuscar已经加载到页面上,并开始提交工作。

它不安全,但您可以使用setTimeout

$(document).ready(function () {
    active_menu('mn_tours'); 
    setTimeout(function(){
        $('#buscar').val(localStorage.getItem("busqueda"));
        $('#btbuscar').trigger('click');
    },1000);
});