在我的项目中,我有一个填充数据的表。在此表中,我有一个动态标头span(x axis)
和动态值input(y axis)
。它们都根据用户插入动态填充。在它们之间是输入复选框。主要目标是找到某个span
的值并找到某个input
的值,然后找到他们遇到的复选框,然后选中该复选框。
这是我试过的
var $td = $('#flooring').find('span:contains('+value.floorno+')').find('input[value='+ value.material +']');
$('#flooringtable tr:not(:eq(0)) td').find(':eq('+$td.index()+')').find('input[type="checkbox"]').prop("checked", true);
更新
这是默认表,因为我动态添加输入不在这里
<table id="flooring">
<tr>
<td><strong><p>Flooring</p></strong>
</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>
<hr/>
</td>
<td>
<span>1st Floor</span>
</td>
<td>
<span>2nd Floor</span>
</td>
<td>
<span>3rd Floor</span>
</td>
<td>
<span>4th Floor</span>
</td>
</tr>
<tr>
<td><span>Reinforced Concrete</span>
</td>
<td>
<input type="checkbox" class="floor1st checkboxfloor" name="flooring[]" />
</td>
<td>
<input type="checkbox" class="floor2nd checkboxfloor" name="flooring[]" />
</td>
<td>
<input type="checkbox" class="loor3rd checkboxfloor" name="flooring[]" />
</td>
<td>
<input type="checkbox" class="floor4th checkboxfloor" name="flooring[]" />
</td>
</tr>
<tr>
<td><span>Plain Cement</span>
</td>
<td>
<input type="checkbox" class="floor1st checkboxfloor" name="flooring[]" />
</td>
<td>
<input type="checkbox" class="floor2nd checkboxfloor" name="flooring[]" />
</td>
<td>
<input type="checkbox" class="floor3rd checkboxfloor" name="flooring[]" />
</td>
<td>
<input type="checkbox" class="floor4th checkboxfloor" name="flooring[]" />
</td>
</tr>
<tr>
<td><span>Marble</span>
</td>
<td>
<input type="checkbox" class="floor1st checkboxfloor" name="flooring[]" />
</td>
<td>
<input type="checkbox" class="floor2nd checkboxfloor" name="flooring[]" />
</td>
<td>
<input type="checkbox" class="floor3rd checkboxfloor" name="flooring[]" />
</td>
<td>
<input type="checkbox" class="floor4th checkboxfloor" name="flooring[]" />
</td>
</tr>
<tr>
<td><span>Wood</span>
</td>
<td>
<input type="checkbox" class="floor1st checkboxfloor" name="flooring[]" />
</td>
<td>
<input type="checkbox" class="floor2nd checkboxfloor" name="flooring[]" />
</td>
<td>
<input type="checkbox" class="floor3rd checkboxfloor" name="flooring[]" />
</td>
<td>
<input type="checkbox" class="floor4th checkboxfloor" name="flooring[]" />
</td>
</tr>
<tr>
<td><span>Tiles</span>
</td>
<td>
<input type="checkbox" class="floor1st checkboxfloor" name="flooring[]" />
</td>
<td>
<input type="checkbox" class="floor2nd checkboxfloor" name="flooring[]" />
</td>
<td>
<input type="checkbox" class="floor3rd checkboxfloor" name="flooring[]" />
</td>
<td>
<input type="checkbox" class="floor4th checkboxfloor" name="flooring[]" />
</td>
</tr>
</table>
这是添加行
var newRow = $('<tr/>');
var i = 0;
newRow.append('<td ><input type="checkbox" class="materialsothersdeleteflagfloor" name="materialsothersdeleteflag[]" />Other(Specify)<span id="materialsfloor_inputtext_othersspan"><input type="text" value = "' + value.material + '" name="" class="" id="materialsfloor_inputtext_others' + i + '"></td>');
for (i; i < numberCheckBox; i++) {
newRow.append('<td><input type="checkbox" class="materialsfloor' + i + ' checkboxmatfloor" name="materialsflooring[]" /></td>');
//$('.checkboxmatfloor[value="' + value.floorno + " " + value.material + '"]').prop("checked", true);
}
答案 0 :(得分:1)
最新/最终修订
这就像5-6行代码。太干净了。
function getNewRow(value) {
$('#flooring tr:last-child input.checkboxfloor').each( function(i) {
value.ret = i === 0 ?
'<td ><input type="checkbox" class="othersdeleteflagfloor" name="deleteflag[]" />' +
'Other(Specify)<span id="materialsfloor_inputtext_othersspan">
<input type="text" value = "' + value.material + '" name="floor_inputtext_others'+
value.material.replace(" ", "") + '" class="fcheck" ' +
'id="floor_inputtext_others'+ value.material.replace(" ", "") + '"></td>' +
'<td><input type="checkbox" class="materialsfloor' +
value.material.replace(" ", "") + i + ' checkboxfloor" name="flooring[]" ' +
((i === (parseInt (value.floorno.slice(0,1))-1)) ? 'checked' : '') + ' /></td>' :
value.ret + '<td><input type="checkbox" class="materialsfloor' +
value.material.replace(" ", "") + i + ' checkboxfloor" name="flooring[]" ' +
((i === (parseInt (value.floorno.slice(0,1))-1)) ? 'checked' : '') + ' /></td>';
});
return $('<tr/>').html(value.ret);
}
$.each(strucmat, function (key, value) {
value.otherflag === '0' && value.location === "floor" ?
$("input[value*=\""+value.material+"\"].floor"+value.floorno.slice(0,3))
.prop("checked", true) : (value.location === "floor" ?
$("input[value*=\""+value.material+"\"].fcheck").val() ?
$("input[type=\"checkbox\"].materialsfloor"+ value.material.replace(" ", "") +
(value.floorno.slice(0,1)-1)).prop("checked", true) :
$("#flooring > tbody > tr:last").after(getNewRow(value)) : null);
});
注意:材料是唯一可用的唯一标识符。我不确定最终会在该变量中包含哪种数据,但我使用了替换来从中删除空格。
(value.material.replace(' ', '');)
您可能需要添加要删除的其他字符。我们所做的就是用它创建一个唯一的ID,所以无论你最终剥离什么,当你去检索它时,只需使用你创建它时所做的相同替换。希望这是有道理的。
除此之外,我只是对数据进行了一些检查,并调整了一些用于检查或取消选中框的选择器。
如果材料类型不止一种,我只检查该材料是否存在,如果存在,而不是添加新行,我只找到该地板和该材料的框并检查它。
如果您有任何其他问题,请告诉我。 :)
我是否忘记了?也许......也许......
function cf(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,w,x,y,z,aa,bb,cc,dd,ee,gg,hh,jj,kk,mm,nn){
for(var ii=0,xx=arguments,ww=xx[atob(nn)];ii<ww;ii++){xx[ii]=atob(xx[ii]);}
function gi(tt,ii,v,ff,rl){return(tt===u?'<'+kk+'><'+i+' '+t+'="'+b+'" '+mm+'="'+cc+dd+f+'" '+jj+'="'+dd+'[]" />'+
hh+'('+gg+')<'+i+' '+t+'="'+bb+'" '+z+'="'+v[m]+'" '+jj+'="'+f+'_'+i+bb+'_'+cc+rl+'" '+mm+'="'+g+'" '+ee+'="'+f+
'_'+i+bb+'_'+cc+rl+'"></'+kk+'>':'')+'<'+kk+'><'+i+' '+t+'="'+b+'" '+mm+'="'+m+'s'+f+rl+ii+' '+b+f+'" '+jj+'="'+
q+'[]" '+(ii===(parseInt(ff))?c:'')+' /></'+kk+'>';}
return function(zz,v){var sl=v[k][w](0,1)-1;var rl=v[m][aa](' ','');var yy='';
v[l]===f?(v[o]==='0'?$(i+'['+z+"*=\""+v[m]+"\"]."+f+v[k][w](0,3))[p](c,y) :
($(i+'['+z+'*="'+v[m]+'"].'+g).val()?$(i+"["+t+"=\""+b+"\"]."+m+"s"+f+rl+sl)[p](c,y) :
$("#"+q+">"+j+">"+u+r+":"+s)[a]($('<'+u+r+'/>')[h](function(){
$('#'+q+' '+u+r+':'+s+'-'+d+' '+i+'.'+b+f)[e](function(iii) {
yy=yy+gi((iii===0?u:x),iii,v,sl,rl);});return yy;})))):n;};}
$.each(strucmat,cf('YWZ0ZXI',"Y2hlY2tib3g=","Y2hlY2tlZA==",'Y2hpbGQ=','ZWFjaA==','Zmxvb3I=','ZmNoZWNr','aHRtbA==','aW5wdXQ=','dGJvZHk=','Zmxvb3Jubw==','bG9jYXRpb24=','bWF0ZXJpYWw=',null,'b3RoZXJmbGFn','cHJvcA==','Zmxvb3Jpbmc=','cg==','bGFzdA==','dHlwZQ==','dA==','c2xpY2U=','eA==',true,'dmFsdWU=','cmVwbGFjZQ==','dGV4dA==','b3RoZXJz','ZGVsZXRlZmxhZw==','aWQ=','U3BlY2lmeQ==','T3RoZXI=','bmFtZQ==','dGQ=','Y2xhc3M=','bGVuZ3Ro'));