2013-07-02 653 views
5

这里我的要求是,我们一旦选择SON或父亲在一个选择框中,如果我在另一个选择框中选择“婆婆”或“父亲In_law”,我想要一条警告消息,如“婆婆是不适用'。验证下拉框选择?

这里是我的代码,

if (arr.indexOf(!(($(this).val() == 'Son' || $(this).val() == 'Father'))) > -1) { 
    alert('In-laws are not applicable'); 
    return false; 
} 

任何一个可以帮我请。 jsFiddle是here

- 谢谢。

回答

3

您可以检查望selects的每一个SonFather用户选择Father-in-lawMother-in-law后:

if($(this).val()=='Mother-in-law' || $(this).val()=='Father-in-law'){ 

    //for each of the Relation selects, we check if anyone is Son or Father    
    $('.classSelect').each(function(){ 
     var currentSelect = $(this).val(); 
     if(currentSelect == 'Son' || currentSelect == 'Father'){ 
      alert("In-laws are not applicable"); 
     } 
    }); 

} 

活生生的例子:http://jsfiddle.net/4QUMG/10/

更新

生活使用arr阵列例如:http://jsfiddle.net/4QUMG/12/

另外,我会保存在变量中的$(this).val()值。

+0

他已经建立了一个选定值的数组。 –

+0

@ColinDeClue然后,他会知道如何使用它:) – Alvaro

+1

显然不是,因为他问的问题:) –

2

如果我理解你,你想要的是看是否已经选择了“儿子”或“父亲”,并且我们正在选择“姻亲”来抛出错误。

if (arr.indexOf('Son') > -1 || arr.indexOf('Father') > -1 && currentVal.indexOf('-in-law') > -1) { 
     alert('In-laws are not applicable'); 
     return false; 
    } 

该代码将做到这一点。如果你想让它工作在反向(即,我们不能在法律的儿子或父亲面前选择,要么),我们就需要补充一点:

if ((arr.indexOf('Father-in-law') > -1 || arr.indexOf('Mother-in-law') > -1) && (currentVal === 'Son' || currentVal === 'Father')) { 
     alert('In-laws are not applicable'); 
     return false; 
    } 

此外,您也可以采取$(this).val()出去一开始就有一个变量,所以你没有时间检查它。所以就像var currentVal = $(this).val(),然后引用它。

这里有一个小提琴:Fiddle

+0

感谢您的解决方案,这对我非常有帮助,我的问题得到了解决。 – Rajasekhar

+1

@Rajasekhar:如果我的解决方案帮助你,请考虑接受它。 –

1

这是另一种选择。这个代码比其他答案效率低,因为它总是迭代。

jQuery有两个品种的$.each(array, function(index, value)...这与您当前的循环类似。

var fields = new Array(); 
$("#dataTable tr select[name^='dRelation']").each(function(i){ 
    fields.push(this.value); 
}); 
var rel = $(this).val(); 
$.each(fields, function(i,val) { 
    if((val=='Son' || val=='Father') && (rel == 'Father-in-law' || rel == 'Mother-in-law'))         
     alert("yep"); 
}); 
+0

感谢您的解决方案,这对我很有帮助。 – Rajasekhar