0

ユーザー入力を検証するスクリプトを作成しようとしています。Like: 文字の長さが 5 を超えるか、パスワードと再入力されたパスワードが一致します。しかし、フォーム内のどの入力ボックスがクリックされたかを取得するにはどうすればよいでしょうか? 使った

$(function() {
    $('#register input').keyup(function() {
        if ($('#username').val().length < 5) {
            $('a.username').text("Please fill");
        } else {
            $('a.username').text("");
        }

        if ($('#password').val().length < 5) {
            $('a.password').text("asdasd");
        } else {
            $('a.password').text("");
        }

    });
});​

新しいユーザー ユーザー名

        <label for="password">Password</label> <input type="password" id="password" name="password"><a class="password"></a>

    </fieldset>
</form>

</p>

入力要素の 1 つをクリックすると、コードが実行され、2 番目のパスワード入力も完全なフィールドではなく、2 番目の<a>タグも起動することがわかります。.keyup要素ごとにいくつかの関数を使用する必要がありますか、またはクリックされた要素を取得する方法はありますか? お気に入り

if (clicked == $("input#username") && $('#username').val().length < 5) {
    $('a.username').text("Please fill");

} else {
    $('a.username').text("Please fill");

}​

しかし、これは機能しません。似たようなものがあってもいいと思います。

4

2 に答える 2

2

$(this)ハンドラ内で使用して、keyupイベントが発生した要素を参照できます。また、次のように、テキストを設定して.next()いる に移動するために使用できます。<a>

$('#register input').keyup(function(){
  $(this).next().text($(this).val().length < 5 ? "Please fill" : "");
});
于 2010-08-31T00:16:13.223 に答える
0

原則として、特定のイベントを取得する場合は、すべてのイベントを取得して独自のフィルター処理を行うのではなく、特定のイベント バインディングを使用する必要があります。(別の方法で実行したい場合は、 、またはイベントに応じてどちらかthis$(this)を参照する必要があります。)

ただし、フォームの検証については、それを行うコードが既に用意されています。たとえば、一般的なフォーム検証用の jQuery Validation プラグインや、パスワード専用の拡張機能などです。あなたの立場で言えば、ゼロから構築するのではなく、少なくともそれらの 1 つから始めたいと思います。

于 2010-08-30T22:16:19.137 に答える