0

私はjQuery.validate.jsプラグインが大好きですが、作業中の新しいフォームにプラグインを実装しているときに、コンテンツが削除されたときに要素からvalid classおよびlabelを削除することができません。input

エラーラベルにクラスを追加する関数をに設定しonkeyupました。フィールドは次のとおりです。falsesuccessvalidrequired

<script>
$(function() {
    $('#test').validate({
        rules: {
            firstname: 'required'
        },
        messages: {
            firstname: 'Please enter a first name'
        },
        success: function(label) {
            label.addClass('valid').text('Yey!');
        },
        onkeyup: false
    });
});
</script>

<form id="test">
    <label>Name<input type="text" id="firstname" name="firstname" /></label>
    <p><input type="submit" value="Submit" /></p>
</form>

http://jsfiddle.net/kw8Lm/

次のシナリオは、私が変更したいものです。

  1. ユーザーがフィールドに値を入力します
  2. フィールドの横に「Yey」ラベルが表示されます
  3. ユーザーが戻ってフィールドをクリアします
  4. 「Yey」ラベルは引き続き表示されます

手順4を変更して、表示されないようにします。のエラーメッセージを表示するか、エラーがField requiredまったく表示されないようにします(何も表示されないため)。

onkeyup奇妙なことに、に設定されていれば動作させることができますがtrue、入力中のエラーチェックの機能は必要ありません。ユーザーにとっては少し重要だと思います。

どんな助けでも大歓迎です、私は他の投稿でこれに対する解決策を見つけることができません-私が何かを逃したならば申し訳ありません。

乾杯!

4

1 に答える 1

0

問題を解決するためにerrorPlacement、エラーメッセージを表示する必要があるたびに発生するオプションを使用しました。それはあなたの「Yay!」を上書きします エラーメッセージが返される必要があるときはいつでもメッセージ。

(このjsFiddle内にコードがどのように配置されているかに注意してください。)

デモ: http: //jsfiddle.net/vwH2x/

$(function () {
    $('#test').validate({
        rules: {
            firstname: 'required'
        },
        messages: {
            firstname: 'Please enter a first name'
        },
        success: function (label) {
            label.addClass('valid').text('Yey!');
        },
        errorPlacement: function (error, element) {
            error.insertAfter(element);
        },
        onkeyup: false
    });
});

「奇妙なことに、onkeyupがtrueに設定されていれば、動作させることができます」

注目に値する何か:

これは、設定されているか、完全onkeyupに省略されているデフォルトのオプションの1つです。falseに設定するとtrue、このプラグインでは無効になります。このonkeyupオプションの背後には機能があり、に設定することfalseはこの機能を無効にする有効な方法です。ただし、に設定することtrueは絶対に行わないでください。このonkeyupオプションを省略すると、デフォルトのonkeyup動作が発生するだけです。

于 2013-01-23T17:32:50.180 に答える