0

ユーザーが複製できるフォームがあるので、一度に複数のフォームを送信できます。これは正常に機能します。しかし、ユーザーがそれを正しい方法で使用していないことに気づきました。たとえば、私はイニシャルを求め、人々は彼らのフロントネームを記入します。PHPはすべてのフィールドをチェックし、必要に応じてそれらを自動修正しますが、これによりJohnがJOHNに変わります

とにかく良い方法は、フィールドを自動修正することです。これは最初のフォームでは機能しますが、複製されたフォームではうまくいきません。特にイニシャルは奇妙に振る舞います。私のjQueryとJavascriptの知識は非常に限られているので、何週間も困惑した後でも、それを解決する方法がわかりません。提案は大歓迎です。

フィドル: http: //jsfiddle.net/QUxyy/15/

JS

// 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;

    });

完全なコードとプレビューについてはクリックしてください

4

1 に答える 1

1

.voorlettersのコールバックイベントハンドラー関数では、「this」を使用します。例:

デモを見る

$(document).on("keydown", ".voorletters", function(e)  {
            var i = $(this).val();
            if (e.keyCode == 8 && i.charAt(i.length - 1) == ".") {
                $(this).val(i.slice(0, -1));
                current = $(this).val();
            }
        })

そして、すべてのコールバック関数に対して、.initials、.lowercaseなどとして実行する必要があります。

于 2013-01-03T15:24:46.397 に答える