2014-02-17 111 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

我的歉意,我錯過了選擇位! –