1

テキストが含まれるテキスト フィールドをクリックし、フォーカスを文字列の末尾に設定すると (ほとんどの人が通常そうするように)、カーソルのフォーカスが文字列の先頭にジャンプします。

これは IE でのみ発生します。アプリは、jquery と javascript を使用した MVC 2 です。

この動作をデバッグするにはどうすればよいでしょうか? これは IE のみの動作であるため、firebug は使用できません。IE 開発者ツールの [スクリプト] タブには、デバッグに役立つ情報がほとんどまたはまったく表示されません。

私はjqueryをくまなく調べましたが、原因として何も飛び出しません。

この問題をデバッグするには、どのような手順を実行しますか? CSS がこの種の動作を引き起こす可能性はありますか?? 私はそうは思わないでしょう。

おそらく、それは LABEL/INPUT 要素のレイアウトである可能性があります...それは確かに要因である可能性があります.

これがフォームの HTML です。JavaScript は非常に制限されており、この問題は発生しません。簡潔にするために、次のフォーム スニペットのみを示します。

<div>
                        <span class="field">
                            <div><label for="Input_Sku" style="width: 130px;">SKU:</label><span class="field"><input id="Input_Sku" name="Input.Sku" type="text" value="" /><span></span></span><p class="message"></p></div>
                        </span>
                    </div>
                    <div>
                        <span class="field">
                            <div><label for="Input_ProductName" style="width: 130px;">Product Name:</label><span class="field"><input id="Input_ProductName" name="Input.ProductName" type="text" value="professional" /><span></span></span><p class="message"></p></div>
                        </span>
                    </div>

編集:

かなり制限された Javascript コードを次に示します。

 <script>
    $(document).ready(function() {  

         $('#reset').bind('click', function() {$('form').clearForm();});
        $(".tbl").tablesorter({ debug: false }); 
        $(".boxname").bind('click', function () {
            $('.tog').toggle();$('.a').toggle();$('.b').toggle();
        });
        $.fn.clearForm = function() {location.reload();};
</script>

そして、スクリプトは次を参照します。

<script src="/Scripts/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery-ui-1.8.6.custom.min.js" type="text/javascript"></script>

最初に行うべきだった解決策の 1 つは、JS Lint を使用してページを実行し、スクリプト参照を 1 つずつ削除して、動作がなくなるかどうかを確認することでしたが、ここでは「建設的に怠惰な」アプローチを採用します。

編集#2

このコード ブロックを使用して、[この投稿][1] の解決策を試しました。

    var el = $("#Input_Sku");
        el[0].onfocus = el[0].onblur = null;
        $(el).on("focus blur", function(e) {
            this.value = $.trim(this.value);    
            if ((e.type === "focus") && this.createTextRange) {
                var r = this.createTextRange();
                r.moveStart("character", this.value.length);
                r.select();
            }
        });

しかし、それは中途半端にしか機能しません。カーソルは INITIAL FOCUS の文字列の末尾に配置されますが、その後、ページ内の任意のテキスト フィールドで何らかのクリックまたはカーソル移動を行うと、カーソルが先頭に戻ります。イライラします。

これを引き起こす可能性のあるスクリプトの排除を開始する必要があると思います。それは大変な苦痛になるだろうが、このバグはショーストッパーになった - だから私は必死になっている.

4

0 に答える 0