JS / jQuery - 强制单击文本区域元素

JS / jQuery - Force a click on a textarea element

本文关键字:单击 文本 区域 元素 jQuery JS      更新时间:2023-09-26

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

$('#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 }}" />

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

尝试.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事件,例如

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