【问题标题】:Trigger working only after alert inside document ready仅在文档内的警报准备就绪后触发工作
【发布时间】:2016-07-17 17:20:48
【问题描述】:

我有这个代码:

$(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');
        });

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

【问题讨论】:

  • 什么是active_menu?是异步函数吗?
  • @MikeC 是的,这是一个异步函数,但这不是真正的问题:/
  • 它是否在#btbuscar 上设置了点击事件?因为听起来提交事件和东西还没有设置。拥有alert 允许异步函数完成。
  • @MikeC active_menu 函数唯一要做的就是将“活动”类设置为链接。
  • 请发布您正在使用的 HTML 和 active_menu 功能。那真的很有帮助。

标签: javascript jquery javascript-events


【解决方案1】:

你有一个时间问题。当 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);
});

【讨论】:

  • 另一种在页面加载时触发点击按钮或提交表单的解决方案?
【解决方案2】:

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

<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');
});

没有看到您原来的按钮侦听器分配,我无法判断这是否正是您想要的,但如果侦听器设置正确,此方法将起作用。

【讨论】:

  • 我不希望显示警报,我希望单击事件在文档就绪函数中触发,以便触发提交事件进行搜索。我发布了警报功能,因为它是触发器工作的唯一方式,但我不希望显示警报。
  • 没关系,它有时可以在 dom 内部使用 $("#search_tour").submit();,这是表单:
    我想在页面加载后立即提交表单。
  • 这是我的回答完成
猜你喜欢
  • 2012-10-16
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多