5

在这里,我的要求是,一旦我们在一个选择框中选择 SON 或父亲,如果我在另一个选择框中选择“岳母”或“岳父”,我想要一条警告消息,例如“姻亲不适用” '。

这是我的代码,

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

任何人都可以帮助我。jsFiddle 在这里

-谢谢。

4

3 回答 3

3

您可以在用户选择 或 之后检查每一项selects查找或:SonFatherFather-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()变量中。

于 2013-07-02T15:43:27.963 回答
2

如果我理解您,您想要查看是否已经选择了“儿子”或“父亲”,而我们目前正在选择“姻亲”,以抛出错误。

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

该代码将做到这一点。如果您希望它反向工作(即,我们也不能在儿子或父亲之前选择 in-law),我们需要添加以下内容:

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(), 然后引用它。

这是一个小提琴:小提琴

于 2013-07-02T15:43:00.717 回答
1

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

jQuery 有两个变种$.each(array, function(index, value)...This works 类似于您当前的循环。

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");
 });
于 2013-07-02T16:32:08.250 回答