0

まず、jQueryは初めてですが、プログラミング全般については説明しません。これは私を殺している、そして私はどこにも答えを見つけることができない。

これが私がやろうとしていることです:

フォームがあります。この例では、2つの主要な要件を使用します。部品名と部品番号を入力しようとしています。ユーザーがそれらのいずれかを入力しない場合、検証のメッセージ部分を無効にしながら、入力ボックスの横のラベルの色を変更したいと思います。

だから、例えば。ユーザーが部品番号を入力しない場合、これを変更したいと思います。

<label for="part_name">Part Name</label>

このようなものに:

<label for="part_name" style="color: #fa0008;">Part Name</label>


これが私のこれまでのコードです。

HTML

<div class='type_left'><label for="part_name">Part Name</label></div>
<div class='type_left'><input type="text" id="part_name" name="part_name"></div>

<div class='type_left'><label for="hj_part">hj Part Number</label></div>
<div class='type_left'><input type='text' name='hj_part'></div>

jQuery(注:これはすべて正常に機能します。デバッグモードで実行しているため、送信を試みません。)

// Validate "Add Part" form ----------------
//------------------------------------------

$j('#addpartform').validate({
    debug: true,
    rules: {
        part_name: {
         required: true
        },
        hj_part: {
         required: true
        },
    },

    errorPlacement: function(error, element) { },

    invalidHandler: function(form, validator) { 
        var errors = validator.numberOfInvalids();
        if (errors) {
            alert("Hey man, you didn't enter something.")
        }           
    },
    submitHandler: function(form) { alert("works!") }

});

//------------------------------------------
// End "Add Part" form validation ----------

これを行うには、検証関数に何を追加する必要がありますか?

私にはそれは非常に単純なように聞こえますが、私はそれを理解することができません。

よろしくお願いします。ダン

4

1 に答える 1

2

if(errors) 内で、これを試してください:

$('#addpartform :input').each(function(){
    if ( $(this).val() == "") ){
        $('label[for="' + $(this).attr('id') + '"]').css('color', '#fa0008');
    }
});

基本的に、フォームをループしており、入力が空の場合は、「id」と同じ「for」属性を使用してラベルに色を追加します。

于 2012-08-31T01:52:34.223 に答える