2014-02-17 3 views
0

У меня есть два массива: arr и myArraycode. Оба имеют некоторые значения, полученные из базы данных. Значения myArraycode отображаются в select на каждой строке. Теперь мне нужно отключить все строки, значения которых не отображаются в массиве arr.если инструкция не работает должным образом в jQuery

Например,

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

У меня есть три строки таблицы, которые имеют sample в одну строку, abc в другой и cde в третий. Теперь мне нужно отключить строку с 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

сначала есть ошибка синтаксиса в 'обр = { "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

мои извинения, я пропустил бит! –

Смежные вопросы