这里我的要求是,一旦我们在一个选择框中选择了SON或父亲,如果我在另一个选择框中选择“婆婆”或“父亲In_law”,我想要一个警告信息,如“公婆”不适用'。
这是我的代码,
if (arr.indexOf(!(($(this).val() == 'Son' || $(this).val() == 'Father'))) > -1) {
alert('In-laws are not applicable');
return false;
}
任何人都可以帮助我。 jsFiddle是 here。
-Thanks。
答案 0 :(得分:3)
用户选择selects
或Son
后,您可以检查Father
寻找Father-in-law
或Mother-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()
的值保存在变量中。
答案 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
答案 2 :(得分: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");
});