【问题标题】:How to trigger a keypress in jQuery when the user focuses in on a text field?当用户专注于文本字段时,如何在 jQuery 中触发按键?
【发布时间】:2016-09-21 04:55:52
【问题描述】:

我想在用户专注于输入文本字段时触发左键按键。到目前为止,我的代码只选择了默认值,但没有触发左键按键。我实际上确实需要文本字段中的默认值。

我有:

<label for="name">Name</label>
<input id="name" type="text">
<label for="email">Email</label> 
<input id="email" type="email" value="@somemail.com">

我试过了:

$('#email').on('focus', function() {
     $(this).trigger($.Event('keypress', {keyCode: 37}));
});

基于JQuery simulating keypress event on an input field 但无济于事。这是一个小提琴:https://jsfiddle.net/c9n39r53/

我希望在表单关注电子邮件输入字段时看到这个:

【问题讨论】:

  • 当按下左箭头时会发生什么,您是否也有一个事件处理程序,或者您只是希望光标因某种原因移动?
  • 您是否试图阻止某人更改字符串的@somemail.com 部分?如果是这样,那么就不要把它放在&lt;input&gt; 中,把它放在&lt;input&gt;旁边
  • 也许是这个? -> jsfiddle.net/adeneo/c9n39r53/2
  • @DavidThomas 我并不是要阻止任何人更改@somemail.com;这只是美学,因为我已经对其进行了另一个验证
  • @adeneo 谢谢,我只需要按下左箭头键,这样用户就可以输入他们电子邮件地址的前@部分,然后继续

标签: javascript jquery html


【解决方案1】:

据我了解,您的计划是强制将光标放在电子邮件输入的开头。

$('#email').on('focus', function() {
    var elem = $(this)
    setTimeout(function(){
    elem.get(0).setSelectionRange(0,0,0);
  },100);
});

这是我对您的 fiddle 的更新

这是@adeneo 提出的解决方案。事实上,他的更好,因为它绝对没有延迟。

在您的小提琴中,您还忘记包含 JQuery。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    相关资源
    最近更新 更多