【问题标题】:JS / jQuery - Force a click on a textarea elementJS / jQuery - 强制点击文本区域元素
【发布时间】:2015-08-25 02:57:51
【问题描述】:

所以我环顾四周,因为我需要解决一个 iOS 错误,但我的模拟点击似乎都不起作用。我正在尝试手动关注 textarea 元素,但为此我需要手动模拟对所述 textarea 元素的点击。所以这是我尝试过的:

$('#text-input')[0].click();
$('#text-input').click();
$('#text-input').trigger('click');
$('#text-input').focus();

$('#text-input').on('click', function {
    $(this).focus();
});

$('#text-input').trigger('click');

$('#text-input').on('touchstart', function {
    $(this).focus();
});

$('#text-input').trigger('touchstart');

HTML:

<textarea id="comment-input" class="comment-input" rows="1" maxlength="{{maxTextLength}}" ng-model="newMessage.content" placeholder="{{ messagePlaceholder }}" />

关于为什么这不起作用的任何想法?

【问题讨论】:

  • 我们能看到 HTML 吗?
  • 似乎是一个错误。参考 12
  • @Drakes 我知道这是一个错误,我正在尝试解决它。​​
  • 有些人在点击输入方面取得了进展,并且可以扩展到 textarea。参考 herehere
  • @Drakes 我也已经看过这些,但我仍然不确定解决方案

标签: javascript jquery html ios


【解决方案1】:

试试.focus 而不是click 喜欢

$('#text-input').trigger('focus');

或者只是

$('#text-input').focus();

更新

您可以尝试setTimeout,它在大多数情况下都有效

$("#text-input").on("click", function(event) {
  setTimeout(function() {
        $(event.target).select(); //or $(event.target).focus();
  }, 1); 
});

更新 2

你也可以尝试使用touchstart event like

//trigger touch on element to set focus
$("#text-input").trigger('touchstart'); 

//event handler to set the focus()
$('#text-input').on('touchstart', function () {
    $(this).focus();   // inside this function the focus works
});

【讨论】:

  • 我已经尝试使用.focus(),但它没有工作,因为它是一个 iOS 错误。我意识到.on 有一个错字,但是在编码时没有犯这个错误:P
  • 人们将代码从源代码复制并粘贴到 SO,这让我们认为当一切看起来都很好时,他们在语法上遗漏了一些东西.. :) @germainelol
  • @germainelol 更新了答案。请检查并告诉我。
  • 你试过touchstarttimeout吗?
  • 我用警报替换了.select(),它成功地到达了警报,但是如果我尝试用其他任何东西替换它,例如focusclick。它不关注文本区域。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-15
相关资源
最近更新 更多