2014-02-17 75 views
0

我有两个数组:arrmyArraycode。两者都从数据库中检索到一些值。 myArraycode的值显示在每行上的select中。现在我需要禁用arr阵列中没有出现值的所有行。如果语句在jquery中不能正常工作

例如,

arr =["abc","cde"]; 
myArraycode=["sample","abc","cde"]; 

我有具有sample一列,abc在另一个并且在第三cde 3点表中的行。现在我需要禁用与sample行,因为sample不在阵列arr

我曾尝试下面的代码:

var kt = 0; 
var kts = 0; 

var sk=0; 
var sv =0; 


while(kt < myArraycode.length) 
{ 
    if($.inArray(myArraycode[kt],arr) === -1) 
    { 

     $("#table tr").find('td').find("select:contains("+myArraycode[kt]+")").closest('tr').find('input[type=text]').attr("disabled","disabled");; 

     $("#table tr").find('td').find("select:contains("+myArraycode[kt]+")").closest('tr').find('select').attr("disabled","disabled");;    
    } 
    kt++; 
} 

请帮我解决这个问题。

Demo

+2

第一存在'ARR = { “ABC”,“CDE一个语法错误“};''应该是''arr = [”abc“,”cde“];' –

+0

我向您展示了示例值。它使用array.push(”value“) – krishna

+0

使用.prop()禁用状态 –

回答

0

我尝试以下代码以禁用具有选择的值作为样本选择框

$(document).ready(function(e){ 


arr =["abc","cde"]; 
myArraycode=["sample","abc","cde"]; 

for(var i=0; i < myArraycode.length; i++) 
{ 
    if($.inArray(myArraycode[i],arr) === -1) 
    { 
$("select").each(function(){ 

    if($(this).val() == myArraycode[i]) 
    { 
     $(this).closest('tr').find('select').attr('disabled','disabled'); 

    } 
});  


} 
} 

}); 

Demo

1
arr =["abc","cde"]; 
myArraycode=["sample","abc","cde"]; 

for(var i=0; i < myArraycode.length; i++) 
{ 
    if($.inArray(myArraycode[i],arr) === -1) 
    { 
    $('option[selected="selected"]:contains("'+myArraycode[i]+'")').parent().attr('disabled','disabled');  
} 
} 

我已经纠正了一些语法错误,但是这应该做的伎俩为您 对于你也可以要么使用一个递减的循环或保存array.length价值性能的原因在一个变量,因此该循环不需要每次运行

我在jsfiddle

注意更新你的答案重新计算值的HTML需要这所选择的属性工作

<option value="sample" selected="selected">sample</option> 
+0

谢谢Ayame.But当我尝试它不会禁用任何行 – krishna

+1

从问题,@ krishna正试图禁用'select'元素。 – anurupr

+0

我的歉意,我错过了选择位! –