4

残念ながら、私はこの問題の解決策を見つけることにあまり成功していなかったので、ここで再び行きます...

基本的に、検証プラグインのデフォルトの動作に依存するのではなく、既存の入力[label]タグの内容をターゲットにして、エラーメッセージに置き換えようとしています。入力フィールドの上または下のいずれかで、DOMに別の[ラベル]を追加します。

これがフォームです。派手なものは何もありません。

<form id="loginForm" action="testing.htm">

<label for="username">Username</label>
    <input id="username" name="username" type="text">

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

<label for="clientid">Client ID</label>
    <input id="clientID" name="clientID" type="text">

<input id="submitButton" name="submitButton" type="submit" value="Login">

...これがスクリプトです

<script type="text/javascript">

$("#loginForm").validate({

    rules: {
        username: "required",
        password: {
            required: true,
            digits: true
        },

        clientID: "required"
        },

    messages: {
        username: "Please enter your username",
        password: "Please enter your password",
        clientID: "Please enter a client ID"            
    },

    errorPlacement: function(error, element) {},        

});

ご覧のとおり、誰かが空白を埋めるのを手伝ってくれることを期待して、errorPlacementコードを空にしました。私は次のことを試みましたが成功しませんでした。

errorPlacement: function(error, element) {
    error.insertBefore( element );
}

これに関するアドバイスは素晴らしいでしょう!髪を抜くようになりました;o(

歓声デブラッド

4

1 に答える 1

1

コールバックでこのようなことができるはずです。

$('label[for="' + element.attr("id") + '"]').text(error.text());

ただし、エラーが修正されるとラベルがなくなると思うので、このアプローチには疑問があります。私が提供したアプローチを使用して他のラベルを見つけて非表示にすることもできますが、元のラベルを再度表示するには、成功のコールバックをオーバーライドする必要もあります。

于 2011-12-12T01:21:11.783 に答える