0

jQueryを使用してフォームの入力を自動修正するスクリプトを使用しています。たとえば、誰かがイニシャルとして「abc」と書くと、フィールドは入力を直接 ABC に自動修正します。

これらのスクリプトはうまく機能します。ただし、誰でも複数のフォームに複数の名前を入力できます。ノックアウトを使用してフォームを複製しています。これまでのところは順調ですが、重複したフィールドでは自動修正が機能しなくなりました..

自動修正は次のようになります (小さな部分):

// Lowercase
    $(".lowercase").keyup(function(e)
    {
        $(".lowercase").val(($(".lowercase").val()).toLowerCase());
        if (/[a-z]/g.test(this.value))
        {
            this.value = this.value.replace(/[^a-z ]/g, '');
        }

    });

    // Initials
    $(".initials").focus(function() {
        var current = $(".initials").val();
        $(".initials").keyup(function(e) {
            var key = String.fromCharCode(e.keyCode);
            if (key >= 'A' && key <= 'Z') {
                current += key + ".";
                this.value = current;
            }
            else {
                current = "";
            }
        });
    $(".initials").blur(function() {
        var i = $(".initials").val();
        var last = i[i.length - 1];
        if (last != "." && i.length !== 0){
            this.value += ".";
            }
        });
    });


    // Capitalize
    $(".cap").keyup(function(e)
    {
        function convertToUpper() {
        return arguments[0].toUpperCase();
         }
        val = this.value.toLowerCase().replace(/\b[a-z]/g, convertToUpper);
        this.value = val;

    });

フィドルはここにあります

アップデート

raghaw のおかげでNumbers が機能するようになりました。しかし、他のフィールドはまだありません

4

1 に答える 1

1

将来作成される要素で機能しないイベントをバインドしています。コードに加えた変更は次のとおりです。

$(document).on("keyup", ".numbers", function(e)  
// $(".numbers").keyup(function(e)

あなたの修正されたフィドルはここにありますhttp://jsfiddle.net/QUxyy/9/

于 2012-12-13T09:18:51.497 に答える