0

質問のセットはほとんどありません。各質問のセットには2つの入力フィールドが含まれています。

            <!--Question Set-->
            <tr class="options_row">
                <td>
                <img src="images/top_bullet.gif" alt="bullet" />
                    I will only be satisfied with a usually high standard of living                    </td>
                <td width="5%">
                    <input name="score[]" type="text" class="score num" title="1" maxlength="1" />
                </td>
            </tr>                                  
            <tr class="options_row">
                <td>
                <img src="images/top_bullet.gif" alt="bullet" />
                    I wish to have considerable influence over other people.                    </td>
                <td width="5%">
                    <input name="score[]" type="text" class="score num" title="2" maxlength="1" />
                </td>
            </tr>

ここで、入力値の 2 つの各セットを検証する必要があります

例えば

->質問セット1->入力_1 + 入力_2 >=3

->質問セット1->入力_1 + 入力_2 <=3

関数を使用してみましたclosestが、うまくいきません。

var score_val = $(this).closest('.score');

ありがとう。

4

2 に答える 2

1

各セットに追加のデータ属性を追加できます。

<input name="score[]" type="text" data-set="1" class="score num" title="1" maxlength="1" />

そして、それらを繰り返します:

var questionSet = {}, i = 0;
$('.score attr["data-set"]').each(function(){
    i++;
    questionSet[$(this).data('set') = {
        i: $(this).value()
    };
    i = (i > 2)? 0 : i;
});

これは次のようなオブジェクトを返します:

questionSet = {
    1: {
        1: "value1",
        2: "value2"
    },
    2: {
        1: "value1",
        2: "value2"
    }
}

これで、このオブジェクトを反復処理できます。

for(x in questionSet){
    if (x[1] + x[2] >= 3) {
        // do something...
    } else {
        // do something else...
    }
}
于 2013-02-04T18:44:25.307 に答える
0

結局これが私が思いついたものです

(function($) {
$.fn.calVal = function(params) {        
    params = $.extend({value:3,message:'The combined value should not be greater than or less than 3'});
    //Get the current node
    var $t = $(this);
        //If the node out of focus
        $t.blur(function() {
            //get the current group
            var data_set = $(this).attr('data-set');
            //the actual sum
            var total = 0;
            //loop through the current node to get the group of its own
            $t.each(function(){
                //get the group of sellected node
                var cur_data_set = $(this).attr('data-set');
                //if any matching group of the current node
                if(cur_data_set==data_set)
                {
                    //total the value of each selected node group
                    total += parseFloat($(this).val());
                }
            });
            //Validate the group value and return the result
            if(total>params.value)
            {
                alert(params.message);
                 $(this).val('');
            }else if(total<params.value)
            {
                alert(params.message);
                 $(this).val('');
            }
        });         
        // allow jQuery chaining
        return this;        
   };
 })(jQuery);

ロジックは少しくだらないかもしれませんが、私にとってはうまくいきます;)

正しい道を示してくれたMr.AvLに感謝します:)

于 2013-02-10T06:25:34.077 に答える