2013-07-02 501 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