【问题标题】:How can I trigger an event without user interaction using jQuery/vanilla JavaScript?如何使用 jQuery/vanilla JavaScript 在没有用户交互的情况下触发事件?
【发布时间】:2016-12-23 03:40:06
【问题描述】:

我有一个基本的输入字段。当页面完成加载时,我想自动关注输入字段,设置一个值,最后触发“输入”按键,而无需用户触发这些事件。

在下面的代码中,前两个步骤工作正常,但从未触发回车键(触发时我有一个警报)。谁能提供有关如何实现这一点的见解?

$(document).ready(function () {
    $("#myInput").focus();
    var e = jQuery.Event("keydown");
    e.which = 13;
    $("#myInput").val("test");
    $("#myInput").trigger(e);
});

【问题讨论】:

  • 该解决方案是指用户触发的事件,我想在页面加载时自动执行此事件
  • 你的最终结果应该是什么?您是否要提交表单,或者什么,因为您的代码工作正常。
  • 我希望在输入字段后触发一个函数。该函数检查输入的格式

标签: jquery keypress


【解决方案1】:

添加keyCode 可能会解决您的问题。

 $(document).ready(function() {
        $("#myInput").focus();
        var e = jQuery.Event("keypress");
        e.which = 13; 
        e.keyCode = 13; 
        $("#myInput").val("test");
        $("#myInput").trigger(e);
 }); 

【讨论】:

  • 感谢您的回复,这个答案并不是我想要的。我想让一个 enter 按键自动触发,而不需要用户触发按键
  • @Kode_12 我已经更新了我的答案。请尝试添加keyCode。
  • 我也试过了。仍然没有触发回车键:(甚至可以在不引入硒的情况下自动化事件吗?
【解决方案2】:

我试过了,这很有效。也许您应该检查keydown 事件处理程序以及您调用它的位置。如果在触发函数后移动底部的 keydown 事件处理程序,它将不起作用。

$(document).ready(function() {

            var e = jQuery.Event('keydown', {
                which: 50
            });
            
            $('input').keydown(function() {
                alert("triggered!");
            });

            $('input').trigger(e);

        });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<input type="button" value="button">

【讨论】:

    猜你喜欢
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 2012-04-08
    相关资源
    最近更新 更多