テキストエリアでフォーカスアウトを使用し、フォーカスアウトの原因となったクリックされたボタンの値を隠しておき、後でクリックして処理したいと考えています。私のソリューションは、iPhone と iPad を除くすべてのデバイスでうまく機能します。タッチスクリーンで event.relatedTarget が null である理由を誰か説明できますか? それともブラウザですか?他に何を使うのですか?
e.currentTarget と document.activeElement (HTML 本文全体を返す) を試したほか、e.currentTarget の使用で setTimeout を試しました。iPad と iPhone で、フォーカスアウト内のクリックされたボタンの ID を取得できないようです。
サンプルは次のとおりです。
<div id="resultPage">
<textarea id="txtAnswer0" class="txtAnswer"></textarea>
<button id="goNow">
GO
</button>
</div>
$(document).ready(function() {
$("#resultPage").on("focusout", ".txtAnswer:not(input[type=radio], input[type=checkbox])", function(e) {
var targetCtrl = e.relatedTarget;
alert(targetCtrl);
});
});
これが私のフィドルです: