0

キープレスがエンターであるキープレスのテキストエリアを空にしてフォーカスする必要があります。正しいコードを書いたと思いますが、テキストエリアが空になることもありますが、フォーカスが発生しないこともあれば、フォーカスが発生することもありますが、このオブジェクトを空にする運がありません。運がない。

これが私のjsです:

<script>
$(document).ready(function() {
    $("#data").focus(function() {
    $(this).empty();
    $(this).focus();
    });
})


    // when the client hits ENTER on their keyboard
    $('#data').keypress(function(e) {


    $this = $(this);
    if($this.val().length == 1)
    {
        var x =  new RegExp("[\x00-\x80]+"); // is ascii

        var isAscii = x.test($this.val());

        if(isAscii)
        {
           $("#data").css({"direction": "ltr", "text-align": "left"});
        } else {
            $("#data").css({"direction": "rtl", "text-align": "right"});
        }
    }


        if (e.shiftKey && e.keyCode == 13) {
            $(this).val($(this).val() + "\n");
            return;

          }
            if(e.which == 13) {
                if($this.val().length == 0){
                    alert('your value is empty')
                }

                var now = time();
                if(now+0.5 > counter){
                counter = now;
                $(this).blur();
                $('#datasend').focus().click();
            }else{
            }
            }
        });
    });

ここに私のhtml部分があります:

    <div class="wrap">
    <div class="rooms">
    <div class="clear"></div>
        <div class="roomsicon">
chatrooms
        </div>
        <ul id="rooms">
        </ul>
    </div>
    <div class="chat_box_container">
    <div class="chat_box" id="mydiv">
    <div id="conversation"></div>
    </div>
    <div class="input_field">
        <textarea id="data" placeholder="type your text ... " ></textarea>
        <input type="button" id="datasend" value="send" />
    </div>

    </div>
    <div class="users">
        <div class="usersicon">online users </div>

        <ul id="users">
        </ul>
    </div>

    </div>
    <!-- clear float -->
    <div class="clear"></div>
4

3 に答える 3

1

empty()値を削除しません。

設定.val("");

focus イベント内で focus を呼び出すと、基本的に無限ループが発生します。良くない。

$("#data").focus(function() {
    $(this).val('');
});

また、要素に既にある HTML5 プレースホルダー属性を再発明するのはなぜですか?

于 2013-05-07T13:13:22.900 に答える
0

コードに ID "data" を持つ要素がありません。keypressさらに、フォーカスが要素内にない場合、もちろん発火しない #data-element に をバインドしています。イベントをテキストエリアではなくドキュメントにバインドしてみてください。

于 2013-05-07T13:16:06.563 に答える
0

設定されている入力/テキストエリアに自動的にフォーカスを置くオートフォーカス html5 タグ (ブール値、値は不要) があります: http://www.html5tutorial.info/html5-autofocus.php

ここに素晴らしい js フォールバック コードがあります: http://sampsonblog.com/tag/html5

js が利用可能な場合、クロス ブラウザー互換のフォーム入力でオートフォーカスを行い、js が利用できない場合、HTML5 対応ブラウザーは引き続きオートフォーカスを表示するように考えてください。間違いなくその機能が必要なので、エンター キーを使用して上記のコードをトリガーする必要があります。その観点からは優れていますが、無効になっているユーザーがナビゲートするのが難しい場合は、オートフォーカス属性を無効にする方法があるので、あまり心配する必要はありません..

accesskey 属性は html5 で議論されています。削除されましたが、再び取り上げられました。これは、キーを使用してフォーム要素にフォーカスを与えるための最良の方法ですが、私が言ったように、議論中であり、再び削除される可能性があります: http:/ /lists.w3.org/Archives/Public/public-html-a11y/2010Jul/0103.html

于 2013-05-07T14:03:45.583 に答える