页面加载时自动按键

3

我有一个输入区域,其中已经预设了一个值。我希望在页面加载时按下键盘上的“Enter”按钮来提交该值。

以下是代码:

$('#login-input').keypress(function(e) {
      if (e.which === 13 && $(this).val() != '') {
        player_name = $(this).val();
        logged = 1;
      }
<div id="console_content">
  <label>Username:</label><input maxlength="10" class="textarea" id="login-input" autocomplete="off" value="Anonymous" type="text">
</div>

欢迎!如果不需要按回车键就能提交数值的解决方案也是可以的!

在定义变量之后,当页面加载时,只需执行player_name = $('#login-input').val(); logged = 1; - StackSlave
1
假定输入是以表单的形式呈现的,那么只需提交表单即可。 - RobG
@RobG 这不是一个表单,只是一个简单的输入区域。 - Joe
@StackSlave 非常感谢!那个解决方案比我想象的简单多了! - Joe
所以你实际上并没有提交该值。 - RobG
3个回答

0

我猜下面的代码应该可以工作。

$('#login-input').keypress(function(e) {
  if (e.which === 13 && $(this).val() != '') {
    console.log('triggered')
    player_name = $(this).val();
    logged = 1;
  }
})
const event = new Event('keypress')
event.which = 13
document.querySelector('#login-input').dispatchEvent(event)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="console_content">
  <label>Username:</label><input maxlength="10" class="textarea" id="login-input" autocomplete="off" value="Anonymous" type="text">
</div>

文档


@Joe请查看演示。 - xianshenglu

0
或者你可以像这样用一个模拟的按键来调用事件处理程序:

function kpress(e) {
 if (e.which === 13 && $(this).val() != '') {
  player_name = $(this).val();
  logged = 1;
  console.log(player_name,logged);
 }
}

kpress.call($('#login-input').keypress(kpress),{which:13});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="console_content">
  <label>Username:</label><input maxlength="10" class="textarea" id="login-input" autocomplete="off" value="Anonymous" type="text">
</div>

我使用 jQuery 事件绑定的输出作为 Function.prototype.call() 方法的对象上下文,并添加一个“简化”的事件对象,如 {which:13}


0
如果您希望在页面加载完成后运行它,请使用 onload 事件。解决方案可能如下所示:
 <script>
  function f() {
    // Test it:
    // alert("Hello, page loaded!"); 
    player_name = $('.some_place').val();
    logged = 1;
  }
 </script>
 <body onload="f()">

如果您希望用户能够预览您的预填充登录表单并了解正在发生的情况,您可以使用setTimeout函数进行延迟,在onload事件发生后0.5秒触发。
 <script>
  function f() {
    $('#some_element').text('Signing you in...');
    player_name = $('.some_place').val();
    logged = 1;
  }
 </script>
 <body onload="setTimeout(f, 500)">

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接