3

私はしばらくこのことを機能させようとしていますが、どこかからコードを微調整する必要があると思います. 私は、コーディング画面に頭をぶつけずに、ここの誰かが私をよりよく導くことができると思いました:)

実際のプロセスは次のとおりです。

<input type="hidden" name='oneSelectionChk_1'>
<input type="checkbox" name='awp_group_1' id='id1'>
<input type="checkbox" name='awp_group_1' id='id2'>
<input type="checkbox" name='awp_group_1' id='id3'>
<input type="checkbox" name='awp_group_1' id='id4'>


<input type="hidden" name='oneSelectionChk_2'>
<input type="checkbox" name='awp_group_2' id='id5'>
<input type="checkbox" name='awp_group_2' id='id6'>
<input type="checkbox" name='awp_group_2' id='id7'>
<input type="checkbox" name='awp_group_2' id='id8'>

<input type="hidden" name='oneSelectionChk_3'>
<input type="checkbox" name='awp_group_3' id='id9'>
<input type="checkbox" name='awp_group_3' id='id10'>
<input type="checkbox" name='awp_group_3' id='id11'>
<input type="checkbox" name='awp_group_3' id='id12'>

私がjQueryに使用しているのは次のとおりです。

var chkFields = $("input[name='oneSelectionChk']");
$.each(chkFields, function(i, field){
var groupID = field.id.split('_'); // Getting the ID of the group
var  chkGroupBoxes = $('input[name="awp_group_"'+groupID[1]);
   if(field.value==1)
   {
            //$.each(chkGroupBoxes, function(j, thisChkBox){
               //alert(thisChkBox.value + " #"+j);
               alert( $('input[name="awp_group_"'+groupID[1]).filter(':checked').length);
                 if($('input[name="awp_group_"'+groupID[1]+':checked').length > 0 )
                   {
                            //$.scrollTo( '#awp_container', 1200 );
                           alert($('input[name="awp_group_"'+groupID[1]+':checked').length+" Selected ");
                           //alert( "Class AlertMsgText Should be removed Now");
                           $("#selectInstruction_"+groupID[1]).removeClass("AlertMsgText");
                         //return
                   }
                   else
                   {
                      alert($('input[name="awp_group_"'+groupID[1]+':checked').length+" Still not selected ");
                     //alert("Please select atleat 1 from Option #"+groupID[1]);
                     $("#selectInstruction_"+groupID[1]).addClass("AlertMsgText");
                     $.scrollTo( '#awp_container', 1200 );
                    //return;
                 }
          //});
      }
    });

このコードでは、チェックボックスの長さが常に 0 になります。チェックボックスごとにもう一度ループする必要があるかどうか、またはこれが機能するかどうかわかりません。

迅速なヘルプをいただければ幸いです。

4

2 に答える 2

0

nameマークアップに の属性を持つ要素はありませんoneSelectionChk。非表示の入力にはnameで始まる属性があります。セレクター oneSelectionChkを使用する必要があります。attribute starts with

.nextUntil()要素が兄弟である場合は、メソッドを使用してターゲット要素を選択できます。

var $hidden = $('input[type=hidden]').filter('[name^=oneSelectionChk]');

$hidden.each(function(){
   var $chekboxes = $(this).nextUntil('input[type=hidden]'),
       $checked = $checkboxes.filter(':checked'),
       $unchecked = $chekboxes.not($checked); 
});

name属性の使用:

var $hidden = $('input[type=hidden]').filter('[name^=oneSelectionChk]'),
    $checkboxes = $('input[type=checkbox]');

$hidden.each(function() {
   var n = this.name.split('_')[1];
   var $grp = $checkboxes.filter('[name="awp_group_'+ n +'"]');
   // ..
});
于 2013-08-28T16:04:01.220 に答える