if语句在jquery中无法正常工作

时间:2014-02-17 12:32:45

标签: javascript jquery if-statement

我有两个数组:arrmyArraycode。两者都有从数据库中检索的一些值。 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++;
}

请帮我解决问题。

Demo

2 个答案:

答案 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');

    }
});    


 }
}

});

Demo