2012-08-16 182 views
1

我有7個類別名稱爲「dd」的下拉列表。我有7個文本框的類名=「tt」。每個文本框對應於每個下拉菜單。 現在,我要檢查檢查具有相同類名的多個元素的值

if(dropdown value is equal to 1) 
    text box can not be empty. 

所以要做到這一點我在做什麼:

function checkOpenHours() { 
     if ($('.dd').val() == 1 && $('.tt').val() == "") { 

       alert("Please select an opening hour."); 
       return false; 

     } 
    } 

和我打電話像

<asp:Button ID="btnSave" runat="server" Text="Update hour" Height="35px" 
     onclick="btnSave_Click" OnClientClick="return checkOpenHours()"/> 

此功能,但問題是,這僅適用於第一個下拉菜單和文本框。 它不適用於其他6下拉和文本框..!

我在做什麼錯?任何幫助?

回答

2

.val()方法返回jQuery對象中第一個元素的值。

你可以這樣做,而不是:

function checkOpenHours() { 
    var $dd = $('.dd'), 
     $tt = $('.tt'), 
     i; 

    for (i = 0; i < $dd.length; i++) { 
     if ($dd.eq(i).val() == 1 && $tt.eq(i).val() == "") { 
      alert("Please select an opening hour."); 
      return false; 
     } 
    } 
} 

我在做什麼有第一把的$('.dd')$('.tt')結果爲變量,因爲雖然在循環使用$('.dd')$('.tt')會工作這將是低效因爲它會在每次迭代中重新創建它們(完成DOM訪問)。然後我使用.eq() method獲取當前i索引中的元素。

我使用標準for而不是jQuery .each(),因爲它可以很容易地從外部函數返回。

+0

hi..thanks..sorry關於最後一個註釋。我刪除了那個。問題是,即使我在文本框中輸入文本,它仍然顯示警報..!你有什麼線索? – kandroid 2012-08-16 09:38:23

+0

似乎在這裏工作得很好:http://jsfiddle.net/nnnnnn/M9YP8/ - 如果你有更多的問題,你需要展示更多的代碼,也許在你自己的小提琴中...... – nnnnnn 2012-08-16 09:46:02

1

val()只返回jQuery集合中第一個元素的值。

您應該爲此使用.each()

喜歡的東西

var allOkay = true; 
$('.dd').each(function(id, item) { 
    var $dropDown = $(item); 
    var $textbox = $dropDown.siblings('.tt') // You'll need to change this according to your HTML! 

    if ($dropDown.val() == 1 && $textbox.val() == '') { 
     allOkay = false; 
    } 
}); 
if (!allOkay) { 
    alert("Ze opening hourz! You did not enter zem!") 
} 
相關問題