我有两个数组:arr
和myArraycode
。两者都有从数据库中检索的一些值。 myArraycode
的值显示在每行的select
中。现在我需要禁用所有值都没有出现在arr
数组中的行。
例如,
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++;
}
请帮我解决问题。
答案 0 :(得分: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');
}
}
我已经纠正了一些语法错误,但这应该适合你 出于性能原因,您还可以使用递减for循环或将array.length值保存在变量中,这样循环不需要每次运行时重新计算值
我已在jsfiddle
中更新了您的答案请注意,HTML需要选定的属性才能使用
<option value="sample" selected="selected">sample</option>
答案 1 :(得分: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');
}
});
}
}
});