3

いくつかのページに次のコードがあり、さらに多くのページで必要になります。

        $('.editable-textbox').live('keypress', function(e) {
            if (e.keyCode == 13) {
                $(this).blur();
                return false;
            }
            return true;
        }).live('keyup', function(e) {
            if (e.keyCode == 13) {
                $(this).blur();
                return false;
            }
            return true;
        });

それにはいくつかの欠点があります。

  • コードはそれが何をするかを暗示していません。それが行うことは次のとおりです:.editable-textboxクラス+コントロールがぼやけているコントロールでEnterキーが押されたときにフォームの送信を防ぎます
  • もちろんコードの重複

私はただ疑問に思っています:それをリファクタリングして次のようなものにする方法はありますか:

$('.editable-textbox').supressFormSubmitOnEnter();

jQueryで。

4

2 に答える 2

7

はい。

$.fn.supressFormSubmitOnEnter = function() {
    return this.live('keypress', function(e) {
            if (e.keyCode == 13) {
                $(this).blur();
                return false;
            }
            return true;
        }).live('keyup', function(e) {
            if (e.keyCode == 13) {
                $(this).blur();
                return false;
            }
            return true;
        });
};

Plugin Authoring Guideを読んでください。

また、もっと簡潔に書くこともできます...

$.fn.supressFormSubmitOnEnter = function() {
    return $(document).on('keypress keyup', this, function(e) {
            if (e.keyCode == 13) {
                $(this).blur();
                e.preventDefault();
            }
        });
};

jsFiddle .

于 2012-08-17T07:09:11.480 に答える
-1

jQueryドキュメントには優れたリソースがあります

于 2012-08-17T07:09:46.823 に答える