ユーザーが最後に操作 (入力) したフィールドを検出しようとする数行のコードがあります。
次のイベント ハンドラーは正しく機能しますが、 の最初のケースは、ユーザーがフィールドまたはif/elseにテキストを入力したかどうかに関係なく、常に実行されます。この例で localeCompare の予期しない動作はありますか?#input1#input2
JS:
$("#input1, #input2").keyup(function () {
    if (("input1").localeCompare($(this).attr("id"))) {
        calculateA();
    } else if (("input2").localeCompare($(this).attr("id"))) {
        calculateD();
    });
}
HTML:
<div id="input1">
    <div class="input-prepend">
        <span class="add-on"></span>
        <input id="foo" class="span7" type="text">
    </div>
    <br>
    <div class="input-prepend">
        <span class="add-on"></span>
        <input id="bar" class="span7" type="text">
    </div>
</div>
編集:上記のコードが原因でエラーが完全に発生したわけではないことが判明しました。.jsスニペット内の 2 つの比較は、実際にはsetTimeoutコールバック関数の本体でした。そのため、実行コンテキスト (およびその後の ' this' の値) が変わるとは思いもしませんでした!